首先你要清楚多线程的生命周期:
初始状态——就绪状态——运行状态——阻塞状态——死亡状态
1、初始状态就是线程的创建,当线程创建完成后,该线程就处于初始状态
2、当线程调用start()方法后,线程就处于就绪状态,意思就是说随时可以进行运行
3、运行状态,当该线程获得CUP资源后,就进入了执行状态
4、当线程遇到sleep() wait()等方法时,线程不会再运行下去了,需要一个条件才能继续运行
5、当执行完run()方法后,就完成了整个线程,进入了死亡状态
sleep()和 wait();都是造成阻塞的原因
sleep(long millis):从字面上可以看得出,这是让这个线程休息多长时间,当线程休息够时间后,进入就绪状态,等待获得CPU的资源,来执行自己没有执行完的代码
wait():这个方法是我进入类休眠状态,也就是动物的冬眠,只用当春天到来后动物才会结束冬眠,而wait是需要使用notify来把他唤醒,来结束休眠。
|