IO流下

字符流:Reader和Writer
Reader:所有字符输入流的父类
Writer:所有字符输出流的父类


字符流处理单位为字符,一次处理一个字符(unicode)
字符流的底层本质上还是用的读写字节


ISR和OSW
InputStreamReader:字符输入流
OutputStreamWriter:字符输出流


BR和BW:可以按行读写字符串
BufferedReader:缓存字符输入流
BufferedWriter:缓存字符输出流


可以直接读写文本文件的字符流
FileWriter
FileReader


带自动行刷新的缓冲字符输出流   PrintWriter
构造方法:
PrintWriter(File file)
PrintWriter(String fileName)
PrintWriter(OutputStream out)
PrintWriter(Writer writer)


对象的序列化和反序列化的流
ObjectInputStream:对象的反序列化流
ObjectOutputStream:对象的序列化流
通常我们序列化对象是用于保存对象和传输对象


Java多线程
java语言的一个优势就是处理多线程比较简单


在一个操作系统中会同时运行多个任务(程序),例如:Myeclipse、画图、QQ等等
1.在操作系统中同时运行的每一个任务都是一个进程(程序)
2.对于一个进程(程序)而言,在程序内部也会同时运行多个任务,那么每一个
任务称为一个线程


线程的运行都是并发执行的,所谓并发:宏观上所有的线程都是同时运行的,但
微观上看所有的线程都是走走停停


线程的调度:
将CPU的时间划分为若干个时间片段,尽可能的均匀分配给每一个线程,获得
CPU时间片段的线程将得以被CPU执行


线程的调度                     经纪人:宋喆
CPU                 王宝强     
线程                                              剧组
时间片段                                      档期


创建线程的两种方式:Thread类    线程类
其每一个实例表示一个可以并发的线程
使用线程的注意事项:
对于线程调度而言,分配的时间片段长短,具体分配给哪一个线程时间片段,对于
程序而言,都是不可控的


线程在执行某段逻辑时可能发生阻塞现象:Sleep阻塞
该阻塞可以指定阻塞时间,并在线程阻塞了该时间后自动返回runnable等待状态
Thread提供了一个静态方法sleep(),该方法就是用于睡眠阻塞的


线程在以下情况下会停止:
1.run方法正常执行完毕
2.run方法执行过程中抛出了一个未捕获的异常(中断异常)


进程的停止:
当一个进程中的所有前台线程停止后,该进程结束


前台线程和后台线程:
后台线程的特点:用法与前台线程无异,只是当一个进程中所有的前台线程都结束
后,无论后台线程是否还在运行中都被强制结束,从而使得进程结束,程序退出
后台线程:也称为守护线程、精灵线程


在运行我们程序的时候,操作系统会启动一个进程来运行JVM,JVM运行后
会创建第一个前台线程来运行我们程序的main方法,同时也会创建一个后台线程
来运行GC(回收不用的内存对象)









你可能感兴趣的:(Java)