码迷,mamicode.com
首页 > 编程语言 > 详细

线程01-线程基础

时间:2018-12-19 01:18:29      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:.com   生命周期   cpu   wait方法   调用   nbsp   rup   数据   http   

技术分享图片

 

线程的生命周期:

1. NEW: 使用new创建一个Thread对象,但没有调用start方法启动线程时的状态; 

2. RUNNABLE:调用start方法时,进入可执行状态,具备执行资格,等待CPU的调度;

  该状态只能意外终止或者进入RUNNING状态;

3. RUNNING:执行状态;线程的状态可以发生如下转换:

  1)直接进入TERMINATED状态,比如:调用已不推荐使用的stop或判断某个逻辑标识;

  2)进入BLOCKED状态,比如:调用sleep,或wait方法而加入waitSet中;

  3)进入某个阻塞的IO操作,比如:网络数据的读写而进入BLOCKED状态;

  4)获取某个锁资源,从而加入到该锁的阻塞队列中而进入BLOCKED状态;

  5)由于CPU的调度器轮询使该线程放弃执行,进入RUNNABLE状态;

  6)线程主动调用yield方法,放弃CPU执行权,进入RUNNABLE状态;

4. BLOCKED:进入该状态的原因见3中描述,阻塞状态中可以切换至如下状态:

  1)直接进入TERMINATED状态,比如:调用已不推荐使用的stop或意外死亡(JVM Crash);

  2)线程阻塞操作的结束,进入到RUNNABLE状态;

  3)线程完成了指定时间 的休眠,进入到RUNNABLE状态;

  4)wait中的线程被其他线程notify/notifyall唤醒,进入到RUNNABLE状态;

  5)线程获得某个锁资源,进入到RUNNABLE状态;

  6)线程在阻塞过程中被打断,比如:其他线程调用了interrupt方法,进入到RUNNABLE状态;

5. TERMINATED:最终状态:

  1)线程运行正常结束,结束生命周期;

  2)线程运行出错意外结束;

  3)JVM Crash,导致所有的线程都结束;

线程01-线程基础

标签:.com   生命周期   cpu   wait方法   调用   nbsp   rup   数据   http   

原文地址:https://www.cnblogs.com/luohoufa/p/10140952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!