java中线程的生命周期
作者:互联网
多线程:
如一个以上的线程同步执行,线程管理工作便显得非常的重要。有些线程必须安排在某些线程之后才能执行,有些线程则必须让它小睡片刻,或者先暂停后执行,在等待其他的线程唤醒它。
线程的生命周期:
新创建的线程:
线程在产生时候便马上进入到这个状态,也就是说,当用new 关键字创建线程对象的时候,线程所处的状态就是这种状态,但是此时系统并不会配置资源,直到调用start()启动线程的时候才会配置。
可运行的线程:
start()方法启动线程之后,线程就可以进入可以运行状态,此时最先抢占到cpu资源的会最先运行run()方法,其余的线程便在队列中等待机会争取cpu的资源,一旦争取到便会开始执行。
被冻结状态:发生下列的事件的时候,被冻结状态的线程产生:
(1)线程调用对象的wait()方法。
(2)该线程本身调用sleep()方法,可以用来设定制定的时间的毫秒数。
(3)该线程和另一个线程join()方法连接在一起的时候。当某一个线程调用join()时候,则其它尚未启动的线程或程序代码会等待到该线程执行结束后才开始执行。
当线程被冻结的时候,便停止run()方法的运行,直到被冻结额因素消失以后,线程便回到可运行状态,继续排队争取cpu资源,本冻结的因素消失的原因有以下几点。
(1)如果线程由调用该对象的wait()方法所冻结,则该对象的notify()方法被调用时候可以解除冻结。notify()的英文本意为“告知”,也就是说,notify()可告知被wait()冻结的线程开始执行。
(2)线程进入睡眠状态,但是指定的睡眠时间到了。
死亡状态:
当线程的run()方法执行完毕以后,或是由线程调用它的stop()方法,则线程进入到死亡状态。
实例代码待续
见博文notify()和notifyall()以及wait的运用实例。
标签:冻结,状态,生命周期,java,调用,线程,中线,方法,wait 来源: https://blog.51cto.com/u_15254659/2950863