线程的生命周期

来源:互联网 发布:数据挖掘工具 编辑:程序博客网 时间:2024/05/22 03:29

线程生命周期

可以说这是我对线程的初步理解与体会,后续一定会有更加深入的理解。

 一个线程它必然要经过新建(new)、就绪(runnable)、运行(running)、阻塞(Blocked)和死亡(dead)这五种状态。

 线程在使用new关键字之后,该线程就处于新建状态,当调用了start()方法之后,该线程就处于就绪状态,这个状态的线程并没有运行,只是表示线程可以运行了,而何时运行还是取决于JVM里的线程调度器。如果你想让线程在创建之后就马上运行,可以在start()之后调用Thread.sleep(1)让主线程睡1毫秒,这1毫秒内CPU不会空闲,它会去执行另一个处于就绪状态的线程,这样就可以让子线程立刻执行了。

   运行和阻塞   在小型设备中线程所占用的资源是只有主动释放,不然就会一直占用,当发生下面情况时线程会阻塞

1、调用sleep()方法------------------------------------给sleep指定时间(解除阻塞的方法)

2、调用阻塞式IO方法-------------------------------------调用的阻塞式IO方法已经返回

3、获得同步监视器,但该同步监视器正被其他线程所持有--------------------------------------线程成功获得同步监视器

4、等待通知(notify())=-------------------------------------其他线程给个通知

5、调用了线程的suspend()方法将该线程挂起,但是容易使线程死锁---------------------------------------resume()恢复被挂起的线程。

线程死亡

1、run()或者call()方法执行完成,线程正常结束

2、线程抛出异常或者错误(error)

3、直接调用了该线程的stop()方法

不要试图对死亡的线程用start方法这是错误的。

未完待续~~~~

0 0