位置:重庆中公优就业IT培训机构 > 学校动态 > 线性的生命周期有哪些方法
以下是小编为大家整理IT培训知识点线性的生命周期有哪些方法的内容。
新建状态:用new语句创建的线程对象处于新建状态
此时它和其它的java对象一样,仅仅在堆中被分配了内存
就绪状态:当一个线程创建了以后,其他的线程调用了它的start()方法
该线程就进入了就绪状态。处于这个状态的线程位于可运行池中,等待获得CPU的使用权
运行状态:处于这个状态的线程占用CPU,执行程序的代码
阻塞状态:当线程处于阻塞状态时,java虚拟机不会给线程分配CPU
直到线程重新进入就绪状态,它才有机会转到运行状态。
阻塞状态分为三种情况:
1、 位于对象等待池中的阻塞状态:当线程运行时,如果执行了某个对象的wait()方法
java虚拟机就回把线程放到这个对象的等待池中
2、 位于对象锁中的阻塞状态,当线程处于运行状态时,试图获得某个对象的同步锁时
如果该对象的同步锁已经被其他的线程占用,JVM就会把这个线程放到这个对象的琐池中。
3、 其它的阻塞状态:当前线程执行了sleep()方法,或者调用了其它线程的join()方法
或者发出了I/O请求时,就会进入这个状态中。
一、创建并运行线程
当调用start方法后,线程开始执行run方法中的代码。线程进入运行状态。
可以通过Thread类的isAlive方法来判断线程是否处于运行状态。
当线程处于运行状态时,isAlive返回true
当isAlive返回false时,可能线程处于等待状态,也可能处于停止状态。
二、挂起和唤醒线程
一但线程开始执行run方法,就会一直到这个run方法执行完成这个线程才退出。
但在线程执行的过程中,可以通过两个方法使线程暂时停止执行。
这两个方法是suspend和sleep。在使用suspend挂起线程后,可以通过resume方法唤醒线程。
而使用sleep使线程休眠后,只能在设定的时间后使线程处于就绪状态
(在线程休眠结束后,线程不一定会马上执行,只是进入了就绪状态,等待着系统进行调度)。
虽然suspend和resume可以很方便地使线程挂起和唤醒
但由于使用这两个方法可能会造成一些不可预料的事情发生
因此,这两个方法被标识为deprecated(抗议)标记
这表明在以后的jdk版本中这两个方法可能被删除
所以尽量不要使用这两个方法来操作线程。
下面的代码演示了sleep、suspend和resume三个方法的使用。
三、终止线程的三种方法
有三种方法可以使终止线程。
1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
2. 使用stop方法强行终止线程(这个方法不推荐使用
因为stop和suspend、resume一样,也可能发生不可预料的结果)。
3. 使用interrupt方法中断线程。
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/3179/news/214558/违者必究! 以上就是重庆中公优就业IT培训机构 小编为您整理 线性的生命周期有哪些方法的全部内容。