线程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-线程基础的主要内容,如果未能解决你的问题,请参考以下文章

线程01-线程基础

并发编程基础01-线程安全

Java线程基础

并发编程(01)--多线程基础

提升--01---线程基础知识

Java多线程-从基础到深入理解-01