Java线程状态(Thread.State)

java.lang.Thread.State

成员内部类

NEW:还未启动

  Thread state for a thread which has not yet started.

RUNNABLE:正在jvm中运行,但是可能正在等待操作系统的其他资源

  Thread state for a runnable thread.

  A thread in the runnable state is executing in the Java virtual machine but it may be waiting for other resources from the operating system such as processor.

BLOCKED:受阻塞,并且正在等待监视器锁

  Thread state for a thread blocked waiting for a monitor lock.

  A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling {@link Object#wait() Object.wait}.

WAITING:处于等待状态的线程,正在等待另一个线程执行特定的操作

  Thread state for a waiting thread.

  A thread is in the waiting state due to calling one of the following methods:

    {@link Object#wait() Object.wait} with no timeout

    {@link #join() Thread.join} with no timeout

    {@link LockSupport#park() LockSupport.park}

  A thread in the waiting state is waiting for another thread to perform a particular action.

  A thread that has called Object.wait() on an object is waiting for another thread to call Object.notify() or Object.notifyAll() on that object.

  A thread that has called Thread.join() is waiting for a specified thread to terminate.

TIMED_WAITING

  Thread state for a waiting thread with a specified waiting time.

  A thread is in the timed waiting state due to calling one of the following methods with a specified positive waiting time:

    {@link #sleep Thread.sleep}

    {@link Object#wait(long) Object.wait} with timeout

    {@link #join(long) Thread.join} with timeout

    {@link LockSupport#parkNanos LockSupport.parkNanos}

    {@link LockSupport#parkUntil LockSupport.parkUntil}

TERMINATED

  Thread state for a terminated thread.

  The thread has completed execution.

  

Thread start()

     sleep() sleep(?)

        join()

Object wait() notify() notifyAll()

   wait(?)




新建(new)

可运行(Runnable)

阻塞(block)

死亡(dead)

新创建一个线程,线程处于新建状态(new)

调用线程的start()方法,线程进入可运行状态(Runnable),该线程位于可运行线程池中,等待被线程调度选中,获取CPU使用权,此时线程处于就绪状态

处于就绪状态的线程一点获得CPU使用权,进入运行状态

一个线程在执行过程中,想获得某一资源的锁,但是该资源又被其它线程占用,此时,当前线程处于阻塞状态(例如,进入一个同步方法或者同步代码块,要先获得锁)

一个线程处于等待(waiting)状态,表示该线程正在等待其它线程执行特定的操作

  例如,一个线程调用了Object类的空参的wait方法,表示该线程等待其它线程调用该对象的notify或者notifyAll方法

        一个线程调用了Thread类的空参的join方法,表示该线程在等待一个特定的线程终止

一个线程处于超时等待状态(timed_waiting),和waiting不同的是,将在特定的时间内自行返回

一个线程执行完毕,进入终止状态(terminated)

原文地址:https://www.cnblogs.com/duanjiapingjy/p/9426825.html

时间: 2024-10-18 08:00:15

Java线程状态(Thread.State)的相关文章

Java线程状态及Thread类中的主要方法

要想实现多线程,就必须在主线程中创建新的线程对象. 任何线程一般具有5种状态,即创建,就绪,运行,阻塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时,他已经有了相应的内存空间和其他资源,但还处于不可运行状态. 就绪状态: 新建线程对象后,调用该线程的start()方法可以启动线程.当线程启动时,线程进入就绪状态.此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了运行条件.-------(运行start()方法只是进入就绪状态,并没有开

获取当前线程状态--Thread类

String msgToPrint = Thread.currentThread().getStackTrace()[3] .getMethodName(); 就是调用时的方法名. 其中使用的Thread类的第一个方法: public static Thread currentThread() 返回当前线程对象. 实例代码: package com.loaderman.getthreadstatusdemo; import android.support.v7.app.AppCompatActi

学习java线程状态和看懂thread dump文件中的线程信息

线程的状态是一个很重要的东西,因此thread dump中会显示这些状态,通过对这些状态的分析,能够得出线程的运行状况,进而发现可能存在的问题.线程的状态在Thread.State这个枚举类型中定义: public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runn

关于Java线程状态

线程状态说明 线程状态定义在Thread.State枚举中,以下内容取自Thread.java源码 NEW: 线程尚未开始 A thread that has not yet started is in this state. RUNNABLE: 线程可运行,但可能未分配到处理器 A thread executing in the Java virtual machine is in this state. BLOCKED: 线程等待monitor锁 A thread that is block

Java线程状态中BLOCKED和WAITING有什么差别?

刚才在看CSDN的问答时.发现这个问题. 原问题的作者是在观察jstack的输出时提出的疑问.那么BLOCKED和WAITING有什么差别呢? 答复在JDK源代码中能够找到,例如以下是java.lang.Thread.State类的一部分凝视. /** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked state is waiting for a monitor lo

谈谈 Java 线程状态相关的几个方法

http://blog.jrwang.me/2016/java-thread-states/ 发表于 2016-07-23 在 Java 多线程编程中,sleep(), interrupt(), wait(), notify() 等方法是非常基本也很常用的方法.这些方法会改变运行中的 Java 线程的状态,正确地认识这些方法是掌握 Java 并发编程的基本要求. Java 线程的状态 先来谈一谈 Java 中线程的状态.在 Java 中,线程的状态和底层操作系统中线程的状态并不是一一对应的关系,

Java线程状态及其转换

线程状态及其转换 一.线程状态 Java中定义线程的状态有6种,可以查看Thread类的State枚举: public static enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; private State() {} } 初始(NEW):新创建了一个线程对象,还没调用start方法: 运行(RUNNABLE):java线程中将就绪(ready)和运行中(running)统称为运行(RUNNABLE

Java线程状态

线程跟人类一样拥有自己的生命周期,一条线程从创建到执行完毕的过程即是线程的生命周期,此过程可能在不同时刻处于不同的状态,线程状态正是这小节的主题,线程到底有多少种状态?不同状态之间是如何转化的? 对于线程的状态的分类并没有严格的规定,只要能正确表示状态即可,如图2-5-7-1,先看其中一种状态分类,一个线程从创建到死亡可能会经历若干个状态,但在任意一个时间点线程只能处于其中一种状态,总共包含五个状态:新建(new).可运行(runnable).运行(running).非可运行(not runna

Java线程状态、线程停止、线程阻塞

线程状态(五种状态) Java 线程的生命周期包括创建,就绪,运行,阻塞,死亡5 个状态.一个 Java 线程总是处于这 5 个生命周期状态之一,并在一定条件下可以在不同状态之间进行转换 . 创建状态 (New Thread) 在 Java 语言中使用 new操作符创建一个线程后,该线程仅仅是一个空对象,它具备了线程的一些特征,但此时系统没有为其分配资源,这时的线程处于创建状态. 就绪状态 (Runnable) 使用 start()方法启动一个线程后,系统为该线程分配了除 CPU 外的所需资源,