线程状态
1、新建new:已建立还没有start
2、就绪runnable:运行中或等待时间片中
3、死亡dead:从run方法中返回,线程运行结束
4、阻塞blocked:线程能够运行,但某个条件阻止了它的运行,直到线程返回就绪状态后,线程继续运行(如:sleep,join,io阻断等原因)
进入阻塞状态
1、sleep,直到超过sleep时间
2、wait,直到得到notify()活notifyAll()后继续。
wait只能用在同步块内,并且将会释放同步锁
notify方法只能拥有对象的锁时才能调用,如:synchronized(x){x.notify();}
3、等待I/O完成
4、等待同步锁
5、join,等到被join的线程结束
Thread.interrupted(); 可以强制所有在阻塞状态的线程抛出 InterruptedException,来提醒线程结束