201711671215《Java程序设计》第11周学习总结
教材学习内容总结
第12章:Java多线程机制
一.进程与线程
1.操作系统与进程
进程是程序的一次动态执行过程。现代操作系统可以同时管理计算机系统的多个线程
2.进程与线程
线程不是进程,线程是比进程更小的执行单位,线程的中断与恢复可以更加节省系统的开销。
二.Java中的线程
1.java的多线程机制
多线程是指一个应用程序的同时存在几个执行体,按几条不同的执行线索共同工作的情况,他使得编程人员可以很方便的开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。虽然给人同时发生的感觉,但这是一种错觉,我们的计算机在任何给定的时刻只能执行线程中的一个。
2.主线程(main线程)
如果main方法中没有创建其他线程,那么当main方法执行完最后一个语句,即main方法返回时,JVM就会结束我们的java应用程序。如果main中创建有线程,那么JVM就要在主线程和其他线程之间轮流切换,保证每个每个相处都有机会使用CPU资源,JVM一直要等到java应用程中的所有线程结束后才结束java应用程序。
3.线程的状态与生命周期
java语言使用Thread类或其子类的对象来表示线程。
1)新建
2)运行
3)中断
4)死亡
4.线程调度与优先级
每个java线程的优先级都在常数1-10之间。如果没有明确地设置线程的优先级,每个新村的优先级都为常数5.
优先级可以调用setPriority(int grade)方法调整,如果参数grade不在1-10范围内,那么会产生一个IllegalArgumentException异常。
JVM的线程调度器的任务是使高优先级的线程能始终运行,也就是说,如果有ABCD四个线程,A和B的级别高于C和D,那么java调度器首先以轮流的方式执行A和B,到AB都执行完毕进入死亡状态,才会在CD之间轮流切换。
三.Thread类与线程的创建
1.使用Thread类的子类
在编写Thread类的子类是,需要重run()方法。
使用Thread类
创建线程的另一个途径就是用Thread类直接创建线程对象。使用Thread创建线程通常使用的构造方法是:Thread(Runnable target)。该构造方法中的参数是一个Runnable类型的接口,因此,在创建线程对象时必须向构造方法的参数传递一个实现Runnable接口类的实例。
3.目标对象与线程的关系
1)目标对象和线程完全解耦
2)目标对象组合线程(若耦合)
4.关于run方法启动的次数
四.线程的常用方法
1)start()
线程调用该方法将启动线程。注:线程调用start()方法之后,就不必再让线程调用start()方法,否则异常。
2)run()
定义线程对象被调度之后所执行的操作,都是系统自动调用而用户程序不得引用的方法。
3)sleep(int millsecond)
4)isAlive
5)currenttThread()
返回当前正在使用CPU资源的线程
6)interrupt
五.线程同步
线程同步是指几个线程都需要用到同一个同步方法(用synchronized修饰的方法)。一个线程在使用同步方法时,可能根据问题的需要,不行使用wait()方法暂时让出CPU的使用权,以便其他线程使用这个同步方法。其他线程在使用这个同步方法时如果不需要等待,那么它用完这个同步方法的同时,应当执行notifyAll()方法通知所有由于使用这个同步方法而处于等待的线程结束等待。
六.协调同步线程
七.线程联合
八.GUI线程
九.计时器线程
十.守护线程
。
教材学习中的问题和解决过程
无。
代码调试中的问题和解决过程
无。