八---九章内容:
java.io包---流
输入流和输出流
字节流和字符流
节点流和处理流
抽象流类型:
字节流 字符流
输入:InputStream Reader
输出:OutputStream Writer
InputStream:数据的单位为字节(8bit)
方法:read(三种形式),close(),skip(long n)
OutputStream
方法:write(三种形式),cloes(),flush()--将输出流中缓冲的数据全部写到目的地,在close前调用。
Reader:数据的单位为字符(16bit)
方法:类似
Writer:
方法:writer(5种哦)
节点流:
File(文件):FileReader,FileWriter;FileInputStream,FileOutputStream
Memory Array:CharArrayReader,CharArrayWriter,ByteArrayInputStream
Memory String:StringReader,StringWriter--无字节流
Pipe(管道--线程)PipedReader,PipedWriter,PipedInputStream
处理流:
Buffering:
Filtering:
Converting between bytes and character:
Object Serialization:
Data conversion:
Counting:
Peeking ahead:
Printing:
常用:BufferReader,BufferWriter
支持:mark,reset方法;
BufferReader提供readLine方法读取一行字符串(/n或者/r分隔)
BufferWriter提供newLine用于写入行分隔符
输出的缓冲流,用flush方法将会使内存中的数据立刻写出
转换流:
OutputStreamWriter,InputStreamReader
FileOutStream("****",true),追加
System.in---标准输入(键盘)
System.out---命令行窗口
数据流:
DataInputStream,DataOutputStream
ByteArrayOutputStream,ByteArrayInputStream
可以写Unicode字符串(UTF-8)网络应用
Print流:
PrintWriter,PrintStream ---不会抛异常,有自动flush功能。
System.setOut();设置输出流目的地(log功能)
Object流:
序列化(把object转换为字节存盘)
关键字:transient--修饰成员变量,序列化的时候透明化,不予考虑。
接口:externalizable---定义怎样序列化,自己控制。
---readExteral(ObjectInput in),writeExternal(ObjectOutput out)
接口:Serizlizable(可以序列化的),标记性接口,无方法,不用自己实现
类:ObjectOutputStream
方法:writeObject(object o),readObject();
第九章:线程
java.lang.Thread类
主方法,主线程main,创建Thread的实例来创建新的线程。
run():线程体。
通过start()方法来启动一个线程。
接口:Runnable
创建新的线程:
1.定义线程类实现Runnable接口
Thread myThread = new Thead(target)//tagrget为Runnable接口类型
public static Thread currentThread()静态方法,获取当前线程的引用。
2.定义Thread的子类并重写run方法
class MyThread extends Thead {
public void run(){***}
}
MyThread myThread = new MyThead();
使用接口比较优,所以尽量使用实现接口,而不继承。
线程控制基本方法:
isAlive()---是否终止,
getPriority(),setPriority()---获取及设置优先级,高的时间片会多点。
Thread.MIN_PRIORITY=1 Thread.MAX_PRIORITY=10 Thread.NORM_PRIORITY=5
默认是5,最高10,最低1.
Thread.sleep()--静态方法--thorws InterruptedException
join()--合并线程,相当于方法调用。
yield()--让出CPU,当前线程进入就绪状态。只让一次。
wait()--当前线程进入对象的wait pool
notify()/notifyAll()--唤醒对象的wait pool中的一个/所有等待线程
interrupt()---打断线程的执行,不是最好中止线程方法。
stop()---废弃方法,一般不用。暴力中断线程执行。
线程同步:
关键字:synchronized--互斥锁,锁定当前对象。
锁定大括号包起来的部分。
用法:
1.synchronized(this){
***
}
2.可以在方法声明中表示为整个方法为同步方法。
死锁。
wait()---Object类的方法。线程等待,释放锁。
与sleep方法区别:Thread类的方法,抱住锁不放开。
notify()---Object类的方法。唤醒wait中的一个线程。
notify()--同上方法,唤醒其他wait中的多个线程。