Java中的线程的生命周期大体可分为5种状态。
①NEW:这种情况指的是,通过New关键字创建了Thread类(或其子类)的对象
②RUNNABLE:这种情况指的是Thread类的对象调用了start()方法,这时的线程就等待时间片轮转到自己这,以便获得CPU;第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法,时间片用完之后回到RUNNABLE状态;还有种情况就是处于BLOCKED状态的线程结束了当前的BLOCKED状态之后重新回到RUNNABLE状态。
③RUNNING:这时的线程指的是获得CPU的RUNNABLE线程,RUNNING状态是所有线程都希望获得的状态。
④DEAD:处于RUNNING状态的线程,在执行完run方法之后,就变成了DEAD状态了。
⑤BLOCKED:这种状态指的是处于RUNNING状态的线程,出于某种原因,比如调用了sleep方法、等待用户输入等而让出当前的CPU给其他的线程。
处于RUNNABLE状态的线程变为BLOCKED状态的原因,除了该线程调用了sleep方法、等待输入原因外,还有就是在当前线程中调用了其他线程的join方法、当访问一个对象的方法时,该方法被锁定等。
相应的,当处于BLocked状态的线程在满足以下条件时就会由该状态转到RUNNABLE状态,这些条件是:sleep的线程醒来(sleep的时间到了)、获得了用户的输入、调用了join的其他线程结束、获得了对象锁。
一般情况下,都是处于RUNNABLE的线程和处于RUNNING状态的线程,互相切换,直到运行完run方法,线程结束,进入DEAD状态。
相关推荐
Java中的线程有六种状态,分别是: 1. **初始(NEW)**:当使用`new`关键字创建一个新的线程对象,但尚未调用`start()`方法时,线程处于初始状态。此时线程并未开始执行。 2. **运行(RUNNABLE)**:线程创建后,其他...
Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换规则。 NEW(初始化状态) 在Java...
5. **守护线程(Daemon)**:守护线程是一种不会阻止程序退出的特殊线程,例如JVM的垃圾收集器就是守护线程。通过`setDaemon(true)`方法将线程设置为守护线程。 6. **线程池**:Java提供`ExecutorService`和`...
本文将详细介绍 Java 线程状态转换图,包括初始状态、可运行状态、运行状态、阻塞状态、锁池状态、等待队列状态和终止状态七种状态的定义、特点和转换关系。 初始状态(Newborn) * 线程的实现有两种方式,一是...
并发编程——Java线程的6种状态及切换(csdn)————程序
5. **线程的生命周期**:线程在其生存周期中会经历以下几种状态: - **新建状态**:通过new语句创建线程后,线程处于新建状态。 - **就绪状态**:当调用start()方法后,线程进入就绪状态等待CPU调度。 - **运行...
在Java中,线程的状态主要包括以下几种: 1. **新状态(New)**:当一个线程对象刚刚创建出来,但还未启动,即`start()`方法尚未被调用时,线程处于新状态。 2. **可运行状态(Runnable)**:当线程对象调用了`start...
在燕山大学信息学院计算机系的课程中,李峰教授讲解了Java线程的多个关键知识点。 首先,线程是一个程序内部的顺序控制流,它是执行程序的最小单位。线程与进程的主要区别在于,进程拥有独立的内存空间和系统资源,...
在Java出现以前,似乎人人都在谈论线程,却很少有人使用它。用线程编程是技巧性很强的且不可移植。 而在Java中却完全不同。Java的线程工具易于使用,并且像Java中的其他东西一样可以在不同的平台之间移植。这是一件...
Java线程有五种基本状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。线程的状态会随着程序的运行而变化: 1. **新建**:当创建了一个新的线程对象后,该线程处于新建...
线程在Java中由`java.lang.Thread`类表示,其生命周期包括以下几种状态: 1. **新建**(New):当使用`new Thread()`创建了一个线程对象时,线程处于新建状态。 2. **可运行**(Runnable):调用`start()`方法后,...
"Java线程状态及切换、关闭线程的正确姿势分享" 本文将详细介绍Java线程状态及切换、关闭线程的相关内容。线程状态及切换是Java多线程编程中一个非常重要的概念,掌握线程状态及切换是编写高效、稳定、可靠的多线程...
Java 多线程知识讲解及练习题 Java 多线程基础知识的了解是 Java 程序设计的重要组成部分,本资源摘要信息对 Java 多线程基础知识进行了详细的讲解和练习题。 1. sleep() 和 wait() 的区别 sleep() 是 Thread 类...
Java提供了两种线程实现方式:继承`Thread`类或实现`Runnable`接口。继承`Thread`类时,需要重写`run()`方法,并直接创建`Thread`对象启动线程。而实现`Runnable`接口则需要创建一个实现该接口的类,然后在创建`...
张孝祥老师讲解java的多线程的配套ppt,很实用的
Java提供了两种创建线程的方式:一是直接继承`Thread`类并重写`run()`方法;二是实现`Runnable`接口并提供`run()`方法,然后通过`Thread`类创建线程实例。 当创建线程时,使用`start()`方法会启动一个新线程并执行`...
书中可能深入讲解了线程同步和并发控制,这是Java线程中的核心概念。同步机制包括`synchronized`关键字、`wait()`, `notify()`, `notifyAll()`方法,以及`java.util.concurrent`包下的高级工具如`Semaphore`, `...
java线程的状态3---马克-to-win java视频的详细描述与介绍
3. 分析Monitor的状态:Monitor是JAVA中的一种同步机制,了解Monitor的状态能够帮助诊断死锁和同步问题。 在分析JAVA线程dump时,需要注意以下几点: 1. 不同的JAVA虚拟机的线程dump的创建方法和文件格式是不一样...
Java 5引入了BlockingQueue阻塞队列,提供了一种更安全的线程间通信方式,如ArrayBlockingQueue、LinkedBlockingQueue等。 在"线程池.rar"和"线程实例"这两个文件中,你可以找到关于这些概念的具体示例代码,通过...