201711671103《JAVA程序设计》第十二章多线程机制学习笔记

教材学习内容总结

1.线程是依附于进程的,进程是分配资源的最小单位,线程是比进程更小的执行单位。一个进程可以产生多个线程,形成多条执行线索。每条线索,即每个线程也有它自身的产生,存在和消亡过程,也是一个动态的概念。

2.JAVA 中的多线程机制:多线程是指一个应用程序同时存在好几个执行体,在几条不同的执行线索中共同工作的情况。

3.Java虚拟机中的线程调度器负责管理线程,在采用时间片的系统中,每个线程都有机会获得CPU的使用权。当线程使用CPU资源的时间到时后,即使线程没有完成全部操作,java调度器也会中断当前线程的执行,把CPU使用权切换给下一个线程,当前线程将等待CPU资源的下一次轮回,然后从中断处继续执行。

4.java使用Thread类及其子类的对象来表示线程,新建的线程在它的一个完整生命期要经历以下几种状态:

①. 新建(New):当创建线程后处于该状态,已经有了相应的内存空间和其他资源。 
②.运行(Running):创建线程后调用start()方法后,当JVM将CPU使用权切换给线程时,线程得到CPU资源后将处于运行状态。 
③中断(Block):(1)JVM将CPU资源从当前线程切换给其他线程,本线程处于中断状态;

                              (2)线程在使用CPU资源期间,执行了sleep方法,使线程进入休眠状态;

                              (3)线程在使用CPU资源期间,执行了wait方法,使线程进入等待状态,这时需要其他线程 调用notify()方                                        法通知它,使它重新进到线程队列中等待CPU资源的下一次轮回,然后从中断处继续执行;

                               (4)运行中的线程如果遇到读写或者其他堵塞条件,将转入阻塞状态 ,此时只有当引起阻塞的原因消除后,                                        线程才能重新进到线程队列中等待CPU资源的下一次轮回,然后从中断处继续执行;
④死亡(Terminate):当线程遇到异常即强制run()方法结束或者执行完run()方法中的全部语句则线程不再具有继续运行的能力,进入死亡状态。

5.线程调度和优先级:java虚拟机中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程轮流使用时间片。如AB线程级别高于CD线程,则java调度器首先轮流执行A和B,等到A,B都执行完毕进入死亡状态,才轮流执行CD。

6.线程的常用方法:

①start() : 线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。

扫描二维码关注公众号,回复: 4313139 查看本文章

②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资源。

7.线程同步就是若干个线程都需要使用一个synchronized修饰的方法.即程序中的若干个线程都需要使用一个方法,而这个方法用synchronized给予了修饰。多个线程调用synchronized方法必须遵守同步机制:当一个线程使用这个方法时,其他线程想使用这个方法时就必须等待,直到线程使用完该方法。在使用多线程解决许多实际问题时,可能要把某些修改数据的方法用关键字synchronized来修饰。

8.当java程序包含图形用户界面(GUI)时,java虚拟机在运行应用程序时会自动启用更多的线程,其中有两个重要的线程:AWT-Eventquecue和AWT-Windows。AWT-Eventquecue负责处理CUI事件,AWT-Windows负责将窗体或者组件绘制到桌面。

9.守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。

猜你喜欢

转载自blog.csdn.net/CHENCHWT/article/details/84441359
今日推荐