线程的生命周期有出生状态,就绪状态,运行状态,等待状态,休眠状态,阻塞状态,死亡状态这7中状态。
当运行状态下的线程调用Thread类的wait()方法,该线程处于等待状态,进入等待状态下的线程必须调用Thread中的notify()方法才能被唤醒,而notifyAll()方法是将说有处于等待状态下的线程唤醒。
当线程调用Thread类的sleep()时,将会进入休眠状态。
如果一个线程在运行状态下发出输入输出请求的话,会使该线程进入阻塞状态,在其等待输入输出结束时线程进入就绪状态,对于阻塞的线程来说,即使系统资源空闲,线程依然不能回到运行状态,当线程的run()执行完之后线程进入死亡状态。
线程进入就绪状态有几种可能:
1.调用sleep()方法
2.调用wait()方法
3.等待输入输出完成
线程处于就绪状态之后,可以用几种方法使线程再次进入到运行状态:
1.调用notify()方法
2.调用notifyAll()方法
3.调用interrupt()方法
4.线程的休眠时间结束
5.输入输出结束
1.线程的休眠
try{
Thread.sleep(2000);
}catch(InterruptrdException e){
e.printStackTrace():
}
2.线程的加入:当某个线程使用join()方法加入到另一个线程时,另一个线程会等待该线程执行完毕再继续执行
3.线程的中断:以前使用stop(),现在使用的是run()方法无限循环的,使用一个布尔类型的标记控制循环的停止。
4.线程的礼让:使用yield()是给当前的正处于运行状态下的线程一个提醒,告知它可以将资源让给其他的线程,但不保证当前线程会将资源礼让。yield()方法具有同样优先级的线程有进入可执行状态的机会,当前线程放弃执行权时会再度回到就绪状态。