Java线程生命周期:
一个线程的大致生命周期分为:创建-就绪-(阻塞)-运行-死亡。
1)创建:当一个thread被实例化出来后就完成了线程的创建;
2)就绪:当一个线程调用了start()方法的时候,该线程就处于就绪的状态了;
3)阻塞:如果一个就绪的线程,没有获得cpu的资源的时候,即处于阻塞状态,但我们通常调用wait()方法时候,可让该线程会处于等待状态‘
4)运行:即如果该线程获得了cpu资源的时候,也就是执行run的方法;
5)死亡:一个线程的run()方法执行完毕,或者未捕获一个未知异常的时候,该线程会死亡;’
关于线程的方法的几个疑惑问题:
sleep和wait区别:
a)sleep属于Thread的方法,而wait属于object对象的方法;
b)sleep方法并不释放锁,而wait方法会放弃锁的占用。
c)sleep在指定一定睡眠后时间后会自动唤起,而wait方法直接将该线程挂起,需要调用notify来唤起该线程;