`

Java线程的5种状态及切换(透彻讲解)

 
阅读更多

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

NEW:这种情况指的是,通过New关键字创建了Thread类(或其子类)的对象

RUNNABLE:这种情况指的是Thread类的对象调用了start()方法,这时的线程就等待时间片轮转到自己这,以便获得CPU;第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法,时间片用完之后回到RUNNABLE状态;还有种情况就是处于BLOCKED状态的线程结束了当前的BLOCKED状态之后重新回到RUNNABLE状态。

RUNNING:这时的线程指的是获得CPURUNNABLE线程,RUNNING状态是所有线程都希望获得的状态。

DEAD:处于RUNNING状态的线程,在执行完run方法之后,就变成了DEAD状态了。

BLOCKED:这种状态指的是处于RUNNING状态的线程,出于某种原因,比如调用了sleep方法、等待用户输入等而让出当前的CPU给其他的线程。

 

处于RUNNABLE状态的线程变为BLOCKED状态的原因,除了该线程调用了sleep方法、等待输入原因外,还有就是在当前线程中调用了其他线程的join方法、当访问一个对象的方法时,该方法被锁定等。

相应的,当处于BLocked状态的线程在满足以下条件时就会由该状态转到RUNNABLE状态,这些条件是:sleep的线程醒来(sleep的时间到了)、获得了用户的输入、调用了join的其他线程结束、获得了对象锁。

一般情况下,都是处于RUNNABLE的线程和处于RUNNING状态的线程,互相切换,直到运行完run方法,线程结束,进入DEAD状态。

分享到:
评论

相关推荐

    Java线程的6种状态及切换(透彻讲解).docx

    Java中的线程有六种状态,分别是: 1. **初始(NEW)**:当使用`new`关键字创建一个新的线程对象,但尚未调用`start()`方法时,线程处于初始状态。此时线程并未开始执行。 2. **运行(RUNNABLE)**:线程创建后,其他...

    Java线程状态流转图

    Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换规则。 NEW(初始化状态) 在Java...

    java多线程的讲解和实战

    5. **守护线程(Daemon)**:守护线程是一种不会阻止程序退出的特殊线程,例如JVM的垃圾收集器就是守护线程。通过`setDaemon(true)`方法将线程设置为守护线程。 6. **线程池**:Java提供`ExecutorService`和`...

    java线程状态转换图

    本文将详细介绍 Java 线程状态转换图,包括初始状态、可运行状态、运行状态、阻塞状态、锁池状态、等待队列状态和终止状态七种状态的定义、特点和转换关系。 初始状态(Newborn) * 线程的实现有两种方式,一是...

    并发编程——Java线程的6种状态及切换(csdn)————程序.pdf

    并发编程——Java线程的6种状态及切换(csdn)————程序

    Java线程讲解Java线程讲解

    5. **线程的生命周期**:线程在其生存周期中会经历以下几种状态: - **新建状态**:通过new语句创建线程后,线程处于新建状态。 - **就绪状态**:当调用start()方法后,线程进入就绪状态等待CPU调度。 - **运行...

    Java线程:线程状态的转换

    在Java中,线程的状态主要包括以下几种: 1. **新状态(New)**:当一个线程对象刚刚创建出来,但还未启动,即`start()`方法尚未被调用时,线程处于新状态。 2. **可运行状态(Runnable)**:当线程对象调用了`start...

    Java线程.ppt

    在燕山大学信息学院计算机系的课程中,李峰教授讲解了Java线程的多个关键知识点。 首先,线程是一个程序内部的顺序控制流,它是执行程序的最小单位。线程与进程的主要区别在于,进程拥有独立的内存空间和系统资源,...

    java线程详细讲解

    在Java出现以前,似乎人人都在谈论线程,却很少有人使用它。用线程编程是技巧性很强的且不可移植。 而在Java中却完全不同。Java的线程工具易于使用,并且像Java中的其他东西一样可以在不同的平台之间移植。这是一件...

    java线程.pdf

    Java线程有五种基本状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。线程的状态会随着程序的运行而变化: 1. **新建**:当创建了一个新的线程对象后,该线程处于新建...

    Java源码查看线程的运行状态.rar

    线程在Java中由`java.lang.Thread`类表示,其生命周期包括以下几种状态: 1. **新建**(New):当使用`new Thread()`创建了一个线程对象时,线程处于新建状态。 2. **可运行**(Runnable):调用`start()`方法后,...

    Java线程状态及切换、关闭线程的正确姿势分享

    "Java线程状态及切换、关闭线程的正确姿势分享" 本文将详细介绍Java线程状态及切换、关闭线程的相关内容。线程状态及切换是Java多线程编程中一个非常重要的概念,掌握线程状态及切换是编写高效、稳定、可靠的多线程...

    java多线程知识讲解及练习题

    Java 多线程知识讲解及练习题 Java 多线程基础知识的了解是 Java 程序设计的重要组成部分,本资源摘要信息对 Java 多线程基础知识进行了详细的讲解和练习题。 1. sleep() 和 wait() 的区别 sleep() 是 Thread 类...

    Java线程详解大全

    Java提供了两种线程实现方式:继承`Thread`类或实现`Runnable`接口。继承`Thread`类时,需要重写`run()`方法,并直接创建`Thread`对象启动线程。而实现`Runnable`接口则需要创建一个实现该接口的类,然后在创建`...

    张孝祥老师讲解java的多线程的配套ppt

    张孝祥老师讲解java的多线程的配套ppt,很实用的

    Java线程详解.ppt

    Java提供了两种创建线程的方式:一是直接继承`Thread`类并重写`run()`方法;二是实现`Runnable`接口并提供`run()`方法,然后通过`Thread`类创建线程实例。 当创建线程时,使用`start()`方法会启动一个新线程并执行`...

    Java线程(第三版)

    书中可能深入讲解了线程同步和并发控制,这是Java线程中的核心概念。同步机制包括`synchronized`关键字、`wait()`, `notify()`, `notifyAll()`方法,以及`java.util.concurrent`包下的高级工具如`Semaphore`, `...

    java线程的状态2---马克-to-win java视频

    java线程的状态3---马克-to-win java视频的详细描述与介绍

    JAVA线程dump的分析

    3. 分析Monitor的状态:Monitor是JAVA中的一种同步机制,了解Monitor的状态能够帮助诊断死锁和同步问题。 在分析JAVA线程dump时,需要注意以下几点: 1. 不同的JAVA虚拟机的线程dump的创建方法和文件格式是不一样...

    java线程实例 各种小Demo

    Java 5引入了BlockingQueue阻塞队列,提供了一种更安全的线程间通信方式,如ArrayBlockingQueue、LinkedBlockingQueue等。 在"线程池.rar"和"线程实例"这两个文件中,你可以找到关于这些概念的具体示例代码,通过...

Global site tag (gtag.js) - Google Analytics