多线程的五种状态:
①新建new:新建线程,此时该线程没有获得cpu的执行权,没有获得cpu的时间片,thread t=new thread();
②可运行runnable:线程处于就绪状态,此时线程已经获得对象,有执行的资格,但是仍没有获得cpu执行权;当线程运行之后或者处于阻塞(睡眠、等待等)时,它还是活的,仍然可以从阻塞运行状态回到可运行状态。
③运行run:线程被os选中,此时获得cpu的执行权,处于运行状态;调用start()方法。
④阻塞:处于运行状态的线程此时有可能有可能等待用户输入,有可能运行sleep方法,也有可能运行join方法,使其处于阻塞状态,此时线程的锁对象还存在。
⑤死亡dead:当线程由运行状态结束之后,即使用执行完run()方法和main方法之后就会处于结束状态,有时候会出现由于线程出现安全异常而变成垃圾对象被回收。
线程五种运行路径:
①新建·——>就绪——>运行——>死亡
线程新建到就绪状态,此时线程以获得锁对象,
②新建·——>就绪——>运行(yield)——>就绪——>运行——>死亡
③新建·——>就绪——>运行——>其他阻塞(sleep,join)——>就绪——>运行——>死亡
④新建·——>就绪——>运行——>同步阻塞(synchronized)——>就绪——>运行——>死亡
⑤新建·——>就绪——>运行——>等待阻塞(wait)——>就绪(notifyAll)——>运行——>死亡