图解Java线程的生命周期_java

在Java中,线程有5中不同状态,分别是:新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。它们之间的转换图如下:

上图有一个例外,调用yield()方法可以让当前处于运行状态的线程转入就绪状态。如果要测试某线程是否已经死亡,可以使用isAlive()方法,该方法在线程处于就绪、运行、阻塞时放回true,新建和死亡时返回false。不要试图对一个已经死亡的线程调用start()方法而重新启动,死亡就是死亡和人一样,不可能再生。还有也不要对一个线程调用两次start()方法,这同样会引发异常。

时间: 2024-08-31 11:47:19

图解Java线程的生命周期_java的相关文章

Java 线程的生命周期详细介绍及实例代码_java

当线程被创建并启动之后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在其生命周期中,要经过"新建(New)"."就绪(Runnable)"."运行(Running')"."阻塞(Blocked)"和"死亡(Dead)"五种状态.线程在创建之后,不可能一直霸占着CPU独立运行,需要在多个线程之间切换,所以大部分时间处于运行.阻塞之间切换.  一.线程的状态 线程的存在有几种不同的状态,如下: New

Java线程的生命周期(转)

  Java线程的生命周期   一个线程的产生是从我们调用了start方法开始进入Runnable状态,即可以被调度运行状态,并没有真正开始运行,调度器可以将CPU分配给它,使线程进入Running状态,真正运行其中的程序代码.线程在运行过程中,有以下几个可能的去向: (1)调度器在某个线程的执行过程中将CPU分配给了其它线程,则这个线程又变为Runnable状态,等待被调度. (2)调度器将CPU分配给了该线程,执行过程中没有遇到任何阻隔,运行完成直接结束,也就是run()方法执行完毕. (3

java线程的生命周期

1.线程的生命周期 线程是一个动态执行的过程,它也有一个从产生到死亡的过程.每个Java程序至少包含一个线程:主线程. (1)线程生命周期的五种状态 1.创建(当用new 创建完一个线程对象后,该线程处于新建状态) 2.就绪(当线程对象调用了start()后,该线程处于就绪状态) 3.执行(如果处于就绪状态的线程获得CPU时间片,开始执行run方法的线程执行体,该线程处于运行状态) 4.阻塞(如果线程调用了sleep().join()或者调用了一个阻塞式IO方法等,该线程处于阻塞状态) 5.死亡

浅谈Java线程的生命周期

创建线程 在 Java 程序中创建线程有几种方法.每个 Java 程序至少包含一个线程:主线程.其它线程都是通过 Thread 构造器或实例化继承类 Thread 的类来创建的. Java 线程可以通过直接实例化 Thread 对象或实例化继承 Thread 的对象来创建其它线程.在线程基础中的示例(其中,我们在十秒钟之内计算尽量多的素数)中,我们通过实例化 CalculatePrimes 类型的对象(它继承了 Thread),创建了一个线程. 当我们讨论 Java 程序中的线程时,也许会提到两

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

复制代码 代码如下: // 开始线程public void start( );public void run( ); // 挂起和唤醒线程public void resume( ); // 不建议使用public void suspend( );// 不建议使用public static void sleep(long millis);public static void sleep(long millis, int nanos); // 终止线程public void stop( );   /

深入Java线程管理(二):线程的生命周期

Java线程的生命周期 一个线程的产生是从我们调用了start方法开始进入Runnable状态,即可以被调度运行状态,并没有真正开始运行,调度器可以将CPU分配给它,使线程进入Running状态,真正运行其中的程序代码.线程在运行过程中,有以下几个可能的去向: (1)调度器在某个线程的执行过程中将CPU分配给了其它线程,则这个线程又变为Runnable状态,等待被调度. (2)调度器将CPU分配给了该线程,执行过程中没有遇到任何阻隔,运行完成直接结束,也就是run()方法执行完毕. (3)线程在

Java对象的生命周期与作用域的讨论(转)

导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对象的使用时间,而T3则表示其清除时间.由此,我们可以看出,只有T2是真正有效的时间,而T1.T3则是对象本身的开销.下面再看看T1.T3在对象的整个生命周期中所占的比例. 我们知道,Java对象是通过构造函数来创建的,在这一过程中,该构造函数链中的所有构造函数也都会被自动调用.另外,默认情况下,调用

Core Java-多线程-线程的生命周期

0. 在介绍线程前我们先看一下什么是进程? 进程是线程的母亲,如果在大学计算机课程里读过操作系统一定不会陌生. 所谓进程,它是计算机程序关于某数据集上的一次活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 罗里吧嗦一大堆,还是不够简洁? 那就一句话来表达吧:进程是正在执行的程序实例.   进程的内存布局 逻辑上一个进程可以划分为以下几部分(段): * 文本: 程序的指令 * 数据: 程序使用的静态变量 * 堆:   程序可以从该区域动态分配额外内存 * 栈:   随函数调用, 返

Linux多线程 创造新线程 线程的生命周期

创造新线程 一.线程的ID pthread_t:结构体(FreeBSD5.2.Mac OS10.3)/unsigned long int(linux)                /usr/include/bits/pthreadtypes.h 获取线程ID:pthread_self() 一个实例:获取主线程ID #include "apue.h" int main(){    pid_t pid;    pthread_t tid;     pid = getpid();    t