线程有五种状态:
创建:被new出来
就绪:调用start方法
运行:获得资源运行
阻塞:调用sleep资源主动放弃资源,进入阻塞状态;调用阻塞io方法进入阻塞状态;试图获取同步监视器,但是该监视器被占用;线
程正在等待通知(notify)
死亡:run执行完毕或出现异常或错误;或调用stop()方法
线程进入阻塞的几种情况:
1.调用sleep方法,主动放弃资源
2.调用阻塞io状态
3.试图获得同步监视器,但该同步监视器被占用
4.等待通知(notify)
5.线程调用suspend方法被挂起
恢复运行状态:
1.sleep到时间
2.io方法已返回
3.线程获得到同步监视器
4.线程正在等待某个通知时,其他线程发出一个通知
5.处于被挂起状态的线程调用resume()方法
api:
jion():让一个线程等待另一个线程执行完或执行执行时间之后在继续执行自己的线程;
举例:线程a的执行代码中调用了线程b的join或jion(long millis)方法,则a被阻塞,待b执行完后或执行一定时间(若时间内b没有死亡)后a在执行。
t.join(); //调用join方法,等待线程t执行完毕
t.join(1000); //等待 t 线程,等待时间是1000毫秒。