美文网首页多线程并发编程系列教程
2 State of Thread(线程状态)

2 State of Thread(线程状态)

作者: Vander1991 | 来源:发表于2019-11-02 12:16 被阅读0次

2.1 线程状态简介

在java.lang.Thread.State中能清楚的看到Java中定义了6种状态:

public enum State {
    /**
     * Thread state for a thread which has not yet started.
     */
    NEW,

    /**
     * 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.
     */
    RUNNABLE,
  1. New:尚未启动的线程的线程状态
  2. Runnable:可运行的线程状态,等待CPU调度
  3. BLOCKED:线程阻塞等待获取监视器锁的线程状态(处于synchronized同步代码块或方法中被阻塞)
  4. WAITING:等待线程的线程状态(不带超时的方式:Object.wait、Thread.join、LockSupport.park)
  5. TIMED_WAITING:具有指定等待时间的等待线程的线程状态。(带超时方式:Thread.sleep、Object.wait、Thread.join、LockSupport.parkNanos、LockSupport.parkUntil)
  6. TERMINATED:终止线程的线程状态。线程正常完成执行或出现异常(接收到中断指令)

2.2 线程状态间的切换

线程间的状态切换

2.2.1 新建-运行-终止(示例)


运行结果

2.2.2 新建->运行->等待->运行->终止(示例)


运行结果

2.2.3 新建->运行->阻塞->运行->终止(示例)


运行结果

这里主线程等待200ms的时候,主线程拿到ThreadStateSwitch的对象锁是没有被释放的,在blockThreadState的方法中的同步块运行完之后,thread3才能拿到对象锁。

相关文章

  • 2 State of Thread(线程状态)

    2.1 线程状态简介 在java.lang.Thread.State中能清楚的看到Java中定义了6种状态: Ne...

  • 代码模拟线程的6种状态

    线程6种状态: NEW Thread state for a thread which has not yet s...

  • Java多线程-线程状态

    线程状态 6个状态定义:java.lang.Thread.State New: 尚未启动的线程的线程状态。 Run...

  • 线程的六种状态

    6个状态定义:java.lang.Thread.State New:尚未启动的线程的线程状态。 Runnable:...

  • 1.1.2 线程状态

    6个状态的定义:java.lang.Thread.State New: 尚未启动的线程的线程状态。 Runnabl...

  • java多线程-线程状态

    JDK中Thread.State提供了6种状态 其中RUNNABLE状态可分为2个状态 Ready当线程创建后,其...

  • Java线程状态

    0 线程状态概述 分类 6个状态定义: java.lang.Thread.State New: 尚未启动的线程的线...

  • JAVA多线程 - 线程状态

    1. 6个状态定义:java.lang.Thread.State New:尚未启动的线程的线程状态。 Runnab...

  • Java线程状态及其转换

    线程状态及其转换 一、线程状态 Java中定义线程的状态有6种,可以查看Thread类的State枚举: 初始(N...

  • Java多线程拾遗

    1. 线程的状态 public enum Thread.State {NEW, RUNNABLE, BLOCKED...

网友评论

    本文标题:2 State of Thread(线程状态)

    本文链接:https://www.haomeiwen.com/subject/tabcbctx.html