基础复习三

一、多线程

进程:正在进行的程序
线程:进程中的执行路径
为网络流读取、IO读取、下载等任务量大耗时长的任务单独开发一个线程。

  • 线程只能开启一次,运行完不能重新启动。
  • 开启多线程的两种方法:继承Thread类覆写run、实现Runnable接口覆写run并用new Thread(对象).start(),前者是后者的的一个子类。Thread类很难达到资源共享(除非修改为静态变量),Runnable接口则可以使资源共享。
  • 线程安全:多个线程同时运行和单线程运行的结果一样。
  • 线程状态:创建–(start)—就绪—运行(run中)—-阻塞—–终止(运行结束时)
  • 线程分为用户进程和守护线程,只剩下守护线程的时候就会退出。
  • start方法和run方法:run方法只是一个普通方法,只有start才兵分两路。
  • 线程的联合(join)和中断(interrupt)
    • wait(睡眠,释放锁)与notify(唤醒第一wait)
  • 同步代码:synchronized,锁的是对象而不是代码。

这里写图片描述
A. 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
B. 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。
C. 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。

二、文件IO

  • 文件操作类File
  • 专门处理文件的类RandomAccessFile
  • 文件内容的操作:
    字节流:操作byte字节,二进制。InputStream和OutputStream(都是接口,实现类是FileInputStream和FileOutputStream)
    字符流:操作字符和字符串等。Reader和Writer(都是抽象类,实现类是FileReader和FileWriter)、字符流的操作多了一个中间环节,用到了缓存区。

  • 管道流pipedInputStream和PipedOutputStream

  • 文件操作流的流程
    1、File类操作路径
    2、实例化字节流/字符流的子类
    3、读/写
    4、关闭

  • System类对IO的支持
    in 对应键盘 InputStream类型
    out 显示器 printStream类型

  • 对象序列化(Serializable):指在内存中的对象转化为二进制数据流形式,对对象进行传输和保存。

猜你喜欢

转载自blog.csdn.net/cairuojin/article/details/80993311