Java多线程之状态与生命周期

原创 2016年06月02日 10:55:35

线程的生命周期

线程创建并启动后,不是一启动就进入执行状态,也不会一直处于执行状态。

线程启动后不可能一直霸占CPU,所以CPU会在多线程之间切换,于是线程状态也会多次在运行、阻塞之间切换

在线程的生命周期中,线程共有5种状态,在任意时刻,线程的状态只能是其中的一种

状态 说明
New 初始状态 —>使用new关键字,创建一个线程,但是还没有调用start方法,仅仅由JVM分配内存,并初始化成员变量
Runnable 就緒状态 —> 调用start()后处于就绪状态,JVM为其创建方法调用栈和程序计数器,但线程并没有开始运行,仅表示可以运行。何时开始,取决于JVM里的线程调度器的调度
Running 运行状态 —>处于就绪状态的线程,获得了CPU,开始执行run()方法,则处于运行状态
Blocked 阻塞状态 —> 表示线程阻塞于锁。线程之间需要切换,时间段用完后,系统会剥夺线程占用的资源,让其他线程执行,选择哪个线程,系统会考虑线程的优先级。调用sleep(),调用阻塞式IO方法,等待同步锁,等待通知wait(),suspend(),join(),这些将使得线程进入阻塞状态
Waiting 等待状态 —> 进入该状态后需要其他线程做出通知动作,也可以算是阻塞状态。需要notify()唤醒线程,使之进入就绪状态
Time_Waiting 超时等状态状态 —> 该状态与WAITING不同,它是可以在指定时间内自行返回的。相当于在等待状态基础上,增加了时间的限制,超过了设定的时间限制就会返回到运行状态
Dead 死亡状态 —> 线程执行完毕。run()或call()执行完成,线程抛出未捕获的Exception或Error,调用该线程的stop(),都会结束线程。

这里写图片描述
为了测试线程是否已经死亡,可以调用线程对象的isAlive()方法,若处于就绪、运行、阻塞三种状态,方法返回true;若线程处于新建、死亡状态,方法返回false。

不能对已经死亡的线程调用start()方法,重新启动,否则抛IllegalThreadStateException异常

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java多线程之线程生命周期和状态控制

java线程的生命周期和状态控制 一、线程的生命周期 线程状态转换图: 1、新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于...

java多线程之线程的生命周期

1.生命周期 一个事物从出生的那一刻开始到最终死亡中间的整个过程.在事物的漫长的生命周期过程中,总会经历不同的状态(婴儿状态/青少年状态/中年状态/老年状态...).线程也是有生命周期的,也是存在不...

Java多线程(二)、线程的生命周期和状态控制

Java多线程(二)、线程的生命周期和状态控制

Java精选笔记_多线程(创建、生命周期及状态转换、调度、同步、通信)

线程概述 在应用程序中,不同的程序块是可以同时运行的,这种多个程序块同时运行的现象被称作并发执行。 多线程可以使程序在同一时间内完成很多操作。 多线程就是指一个应用程序中有多条并发执行的线索,每...

Java多线程(二):线程的生命周期和状态控制

转载自:http://blog.csdn.net/lonelyroamer/article/details/7949969 一、线程的生命周期 线程状态转换图: ...

多线程的生命周期---理解Java里的线程状态

点击进入原文        理解线程的生命周期和线程状态对于使用多线程以及在多线程的环境下编程是非常重要的。        创建一个Java的多线程,我们可以通过实现Run...

Java多线程(二)、线程的生命周期和状态控制

Java多线程(二)、线程的生命周期和状态控制 分类: javaSE综合知识点 2012-09-10 16:11 2743人阅读 评论(1) 收藏 举报 一、线程的生命周期 ...

Java多线程(二)、线程的生命周期和状态控制

、线程的生命周期 线程状态转换图: 1、新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空...

初学Java多线程:线程的生命周期(转)

初学Java多线程系列的本部分介绍线程的生命周期。与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。   ...

Java多线程生命周期

今天抽点时间和大家一起学习Java多线程的生命周期,相互学习一下。 1.线程可以分为4个状态:New(新生)、Runnable(可运行)注:为了方便分析,将其分为:Runnable与Running、b...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)