教材学习内容总结
本周学习内容:第十二章 :Java多线程机制
- 现代操作系统可以让计算机系统中的多个进程轮流使用CPU资源,甚至可以让多个进程共享操作系统所管理的资源。
- 线程不是进程,是比进程更小的执行单位,且行为与进程很像;没有进程就不会有线程。
- Java语言支持多线程。
- 计算机在任何给定的时刻只能执行所有线程中的一个;Java虚拟机能够快速地把控制从一个线程切换到另一个线程。
- Java总是从主类的main方法开始执行,执行完main方法后JVM会等其他所有线程都结束之后,才结束Java程序。
- 线程有4种状态:新建、运行、中断、死亡。
- 引起线程中断的原因:
(1)JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU使用权处于中断状态。
(2)线程使用CPU资源期间,执行了sleep(int millsecond)方法,是当前线程进入休眠状态。
(3)线程使用CPU资源期间,执行了wait()方法,是当前线程进入等待状态。
(4)线程使用CPU资源期间,执行某个操作进入阻塞状态。
- 程序要在Thread类的子类中重写run()方法来覆盖父类的run()方法,并且规定线程的具体操作;在线程没有结束run()方法之前,不要让线程再调用start()方法。
- JVM的线程调度器会使高优先级的线程能始终运行。但是在实际编程中不提倡使用线程的优先级来保证算法的正确执行。
- 使用Thread类创建线程对象:Thread(Runnable target)。
- 目标对象与线程的关系:完全解耦:目标对象通过获得线程的名字来确定是哪个线程正在占用CPU资源;弱耦合:组合线程,将目标对象作为自己的成员,可以获得线程对象的引用。
- 线程同步:若干个线程都需要使用一个synchronized(同步)修饰的方法,多个线程调用该synchronized方法必须遵守同步机制。
- 协调同步的线程:wait()、notify()、notifyAll()都是类中的final方法,被所有的类继承且不允许重写的方法。
- 不可以在非同步方法中使用wait()、notify()、notifyAll()。
- 线程联合、GUO线程、计时器线程、守护线程。
参考资料
-
Java 2 实用教程(第5版)