现在的位置: 首页 > 综合 > 正文

JAVA线程的生命周期

2018年04月16日 ⁄ 综合 ⁄ 共 758字 ⁄ 字号 评论关闭
文章目录

线程的生命周期有出生状态,就绪状态,运行状态,等待状态,休眠状态,阻塞状态,死亡状态这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()方法具有同样优先级的线程有进入可执行状态的机会,当前线程放弃执行权时会再度回到就绪状态。

 

 

 

【上篇】
【下篇】

抱歉!评论已关闭.