java_5:线程的生命周期和状态转换

一、线程5个状态的简单介绍

开始:当线程Thread对象创建完成时,线程的生命周期就开始了
结束:当run()方法中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或错误(Error)时,线程的生命周期结束

  • 线程整个生命周期分为5个阶段:
  • 新建状态(New):此时仅由Java虚拟机为其分配了内存,没有表现出任何线程的动态特征,还不能运行
  • 就绪/可运行状态(Runnable):线程对象调用了start()方法,具备了运行条件,此时线程位于可运行池中。但能否运行,要看是否获得CPU使用权,这需要等待系统额调度
  • 运行状态(Running):就绪状态的线程获得了CPU的使用权,开始执行run()方法,
  • 阻塞状态(Blocked):正在执行的线程回音某些特殊的情况,放弃CPU使用权,进入阻塞状态,此时它不能进入就绪队列进行排队等候,只有消除阻塞原因后,才能转为就绪状态
  • 死亡状态(Terminated):当run()方法中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或错误(Error)时,线程进入死亡状态。一旦进入死亡状态,线程将不再有运行的资格,也不能转为其他状态。

    二、状态转换关系图:

原文地址:https://blog.51cto.com/14234228/2447244

时间: 2024-11-06 07:29:46

java_5:线程的生命周期和状态转换的相关文章

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

Java多线程(二).线程的生命周期和状态控制 分类: javaSE综合知识点 2012-09-10 16:11 15937人阅读 评论(3) 收藏 举报 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable). 注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadSt

Java多线程 2 线程的生命周期和状态控制

一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable). 注意:不能对已经启动的线程再次调用start()方法,否则会出现Java.lang.IllegalThreadStateException异常. 2.就绪状态 处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,处于线程就绪队列(尽管是采用队列形式,事实上,把它

Java多线程——线程的生命周期和状态控制

一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable). 注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常. 2.就绪状态 处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,处于线程就绪队列(尽管是采用队列形式,事实上,把它

线程的生命周期和状态概述

生命周期:线程也是有生命周期的,也是存在不同的状态的,状态相互之间的转换. 新建状态,就绪状态,运行状态,阻塞状态,死亡状态. 有人把阻塞状态,等待状态,计时等待状态合称为阻塞状态. 线程对象的状态存放在Thread类的内部类(State)中: 注意:Thread.State类其实是一个枚举类.因为线程对象的状态是固定的,只有6种,此时使用枚举来表示是最恰当的. 新建状态(new):使用new创建一个线程对象,仅仅在堆中分配内存空间,在调用start方法之前. 新建状态下,线程压根就没有启动,仅

Java线程 — 线程的通信 — 线程的生命周期和状态概述

生命周期:线程也是有生命周期的,也是存在不同的状态的,状态相互之间的转换. 新建状态,就绪状态,运行状态,阻塞状态,死亡状态. 有人把阻塞状态,等待状态,计时等待状态合称为阻塞状态. 线程对象的状态存放在Thread类的内部类(State)中: 注意:Thread.State类其实是一个枚举类.因为线程对象的状态是固定的,只有6种,此时使用枚举来表示是最恰当的.

线程的生命周期及状态

转载自: http://www.cnblogs.com/HigginCui/p/5903012.html [线程状态] 在线程的生命周期中,它要经过 新建(New).就绪(Runnable).运行(Running).阻塞(Bolcked).死亡(Dead)总共5种状态. 尤其在线程启动之后,它不可能一直占着CPU运行,所以CPU需要在多个线程之间相互切换,于是线程的状态也会多次在运行.阻塞之间切换. [新建和就绪状态] 新建状态:当程序使用new关键字创建了一个线程之后,这个线程就处于新建状态,

Java线程的生命周期与状态流转

上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程. 这些状态的枚举值都定义在java.lang.Thread.State下 NEW:毫无疑问表示的是刚创建的线程,还没有开始启动. RUNNABLE:  表示线程已经触发start()方式调用,线程正式启动,线程处于运行中状态. BLOCKED:表示线程阻塞,等待获取锁,如碰到synchronized.lock等关键字等占用临界区的情况,一旦获取到锁就进行RUNNABLE状态继续运行. WAITING:表示线程处于无限制

并发和多线程(三)--线程的生命周期/状态

线程的生命周期或者说状态其实不复杂,但是很多人的理解可能有错误,一个典型的误区,线程运行时的状态是Runnable,而不是Running,因为线程 没有Running状态. 线程的状态 1.New:已创建,没启动.还没有执行start() 2.Runnable:调用start()之后就处于Runnable,无论是否已经运行,都是Runnable状态,对应操作系统的Ready和Running状态. 3.Blocked:进入Synchronized修饰的方法或者代码块,但是无法获取锁,就处于Bloc

Java中的线程的生命周期大体可分为5种状态

Java中的线程的生命周期大体可分为5种状态. ①NEW:这种情况指的是,通过New关键字创建了Thread类(或其子类)的对象 ②RUNNABLE:这种情况指的是Thread类的对象调用了start()方法,这时的线程就等待时间片轮转到自己这,以便获得CPU:第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法,时间片用完之后回到RUNNABLE状态:还有种情况就是处于BLOCKED状态的线程结束了当前的BLOCKED状态之后重新回到RUNNABLE状态. ③RUNNING