20175322 《Java程序设计》第十周学习总结
教材学习内容总结
- 进程与线程
- 线程:一个进程在执行中,可以产生多个执行线索,每条线索也有产生、存在和消亡的过程
- 进程:程序的一次动态执行过程中,从代码加载、执行至执行完毕的一个完整过程
- Java中的线程
- 多线程:一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况
- 线程的周期:线程使用
Thread类及其子类对象来表示线程
- 主线程:负责执行
main方法
- 完整的生命周期:新建、运行、中断、死亡
- 新建:新建时就有了内存空间
- 死亡:执行完了run()方法中全部语句。或被提前强制性终止
- Thread类与线程的创建
- 用
Thread类直接创建线程对象。Thread(Runnable target)(该构造方法中的参数是一个Runnable类型的接口)
Thread类的子类不能再扩展其他的类
- 编写
Thread类的子类时,需要重写父类的run()方法
- 目标对象与线程的关系
- 目标对象和线程完全解耦。目标对象没有组合线程对象.目标对象经常需要通过获得线程的名字(因为无法获得线程对象的引用)以便确定是哪个线程正
在占用CPU资源,即被JVM正在执行的线程
- 目标对象组合线程(弱耦合)。目标对象可以组合线程.目标对象类组合线程对象时, 目标对象可以通过获得线程对象的引用
- 线程的常用方法
start(); 线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命
周期了
run();Thread类的run()方法与Runnable接口中的run()方法的功能和作用相同,都用来定义线程对象被调度之后所执行的操作,都是系统自动调用而用户程
序不得引用的方法
sleep(int millsecond);优先级高的线程可以在它的run()方法中调用sleep方法来使自己放弃CPU资源,休眠一段时间
isAlive(); 线程处于“新建”状态时,线程调用isAlive()方法返回false。在线程的run()方法结束之前,即没有进入死亡状态之前,线程调用isAlive()方法
返回true
currentThread();该方法是Thread类中的类方法,可以用类名调用,该方法返回当前正在使用CPU资源的线程
interrupt();一个占有CPU资源的线程可以让休眠的线程调用interrupt()方法“吵醒”自己,即导致休眠的线程发生InterruptedException异常,从而结束休
眠,重新排队等待CPU资源
- 线程同步
- 线程同步机制:当一个线程使用
synchronized方法时,其他线程想使用这个synchronized方法时就必须等待,直到前一个线程使用完该synchronized方
法
- 若干个线程都需要使用一个
synchronized(同步)修饰的方法,即程序中的若干个线程都需要使用一个方法,而这个方法用synchronized给予了修饰,多个
线程调用synchronized方法必须遵守同步机制
- 协调同步的线程
wait()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法
notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先
继续”的原则
notify()方法只是通知处于等待中的线程的某一个结束等待
- 线程联合
- 一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如:B.join(); 称A在运行期间联合了B
GUI线程
- 计时器线程
- 守护线程
![]()
感悟
- 本章内容较多,线程知识点有点难理解运用,之后还需要不断结合例子练习
- 做实验发现对于上周的数据库知识掌握不够,运用生疏,需要翻书查找资料巩固
参考资料
posted @
2019-05-05 14:12
20175322周弋鸿
阅读(
108)
评论()
收藏
举报