线程01-线程基础
Posted luohoufa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程01-线程基础相关的知识,希望对你有一定的参考价值。
线程的生命周期:
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-线程基础的主要内容,如果未能解决你的问题,请参考以下文章