线程是比进程更加轻量级的调度执行单位,理解线程是理解并发编程的不可或缺的一部分;而生产过程中不可能永远使用裸线程,需要线程池技术,线程池是管理和调度线程的资源池。因为前不久遇到了一个关于线程状态的问题,今天就趁热打铁从源码的层面来谈一谈线程和线程池的状态及状态之间的转移。

线程

JDK中,线程(Thread)定义了6种状态:  NEW(新建)、RUNNABLE(可执行)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(限时等待)、TERMINATED(结束)。

源码如下:

    /**
* A thread state. A thread can be in one of the following states:
* <ul>
* <li>{@link #NEW} * A thread that has not yet started is in this state.
* </li>
* <li>{@link #RUNNABLE} * A thread executing in the Java virtual machine is in this state.
* </li>
* <li>{@link #BLOCKED} * A thread that is blocked waiting for a monitor lock
* is in this state.
* </li>
* <li>{@link #WAITING} * A thread that is waiting indefinitely for another thread to
* perform a particular action is in this state.
* </li>
* <li>{@link #TIMED_WAITING} * A thread that is waiting for another thread to perform an action
* for up to a specified waiting time is in this state.
* </li>
* <li>{@link #TERMINATED} * A thread that has exited is in this state.
* </li>
* </ul>
*
* <p>
* A thread can be in only one state at a given point in time.
* These states are virtual machine states which do not reflect
* any operating system thread states.
*
* @since 1.5
* @see #getState
*/
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,
/**
* 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}.
*/
BLOCKED,
/**
* Thread state for a waiting thread.
* A thread is in the waiting state due to calling one of the
* following methods:
* <ul>
* <li>{@link Object#wait() Object.wait} with no timeout</li>
* <li>{@link #join() Thread.join} with no timeout</li>
* <li>{@link LockSupport#park() LockSupport.park}</li>
* </ul>
*
* <p>A thread in the waiting state is waiting for another thread to
* perform a particular action.
*
* For example, a thread that has called <tt>Object.wait()</tt>
* on an object is waiting for another thread to call
* <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on
* that object. A thread that has called <tt>Thread.join()</tt>
* is waiting for a specified thread to terminate.
*/
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:
* <ul>
* <li>{@link #sleep Thread.sleep}</li>
* <li>{@link Object#wait(long) Object.wait} with timeout</li>
* <li>{@link #join(long) Thread.join} with timeout</li>
* <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>
* <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>
* </ul>
*/
TIMED_WAITING,
/**
* Thread state for a terminated thread.
* The thread has completed execution.
*/
TERMINATED;
}

状态说明

线程在一个给定的时间点只能处于下面其中一种状态:

这些状态是虚拟机状态,并不能反映任何操作系统的线程状态。

  • NEW:尚未启动的线程处于这个状态。Thread thread = new Thread(new Runnable(){...});处于这个状态。
  • RUNNABLE:可运行的线程处于这个状态。对应操作系统中的两种状态:ready和running,也就是说RUNNABLE状态既可以是可运行的,也可以是实际运行中的,有可能正在执行,也有可能没有正在执行。关于这个问题的理解,可以对比想一下,thread.start()调用之后线程会立刻执行吗?
  • BLOCKED:阻塞,进入synchronized修饰的方法或者代码块,等待监视器锁的线程处于这个状态。
  • WAITING:无限期等待另一个线程执行特定操作的线程处于这种状态。
  • TIMED_WAITING:正在等待另一个线程执行某个操作的线程在指定的等待时间内处于这种状态。
  • TERMINATED:已经退出的线程处于这个状态。

状态转移

NEW:线程尚未启动的线程状态。当在程序中创建一个线程的时候Thread t = new Thread(Runnable);,线程处于NEW状态。

RUNNABLE:可运行线程的线程状态。处于可运行状态的线程正在Java虚拟机中执行,但它可能正在等待操作系统中的其他资源,比如处理器。也就是说, 这个状态就是可运行也可不运行的状态。注意Runnable ≠ Running。

BLOCKED:进入synchronized修饰的方法或者代码块,等待监视器锁的阻塞线程的线程状态。比如,线程试图通过synchronized去获取监视器锁,但是其他线程已经独占了,那么当前线程就会处于阻塞状态。等到获得了监视器锁之后会再次进入RUNNABLE状态。

WAITING:调用以下方法之一,线程会处于等待状态:

  • Object.wait()注意:括号内不带参数;
  • Thread.join()注意:扩号内不带参数;
  • LockSupport.park();

其实wait()方法有多重形式,可以不带参数,可以带参数,参数表示等待时间(单位ms),如图所示:

aaarticlea/png;base64,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" alt="" />

“BLOCKED(阻塞状态)”和“WAITING(等待状态)”的区别:阻塞状态在等待获取一个排它锁,这个事件将会在另外一个线程放弃这个锁的时候发生,然后由阻塞状态变为可执行状态;而等待状态则是在等待一段时间,或者等待唤醒动作的发生。

TIMED_WAITING:一个线程调用了以下方法之一(方法需要带具体的等待时间),会处于定时等待状态:

  • Thread.sleep(long timeout)
  • Object.wait(long timeout)
  • Thread.join(long timeout)
  • LockSupport.parkNanos()
  • LockSupport.parkUntil()

TERMINATED:   该线程已经执行完毕。执行完毕指的是线程正常执行完了run方法之后退出,也可以是遇到了未捕获的异常而退出。

其实这些大部分在源码的注释中可以找到。下面我自己翻译的中文版,不嫌弃的话可以参考:

    /**
* 线程状态。 一个线程可以处于下列状态之一:
*
* NEW:尚未启动的线程处于这个状态。
*
* RUNNABLE:正在Java虚拟机中执行的线程处于这个状态。
*
* BLOCKED:阻塞中,等待监视器锁的线程处于这个状态。
*
* WAITING:无限期等待另一个线程执行特定操作的线程处于这种状态。
*
* TIMED_WAITING:正在等待另一个线程执行某个操作的线程在指定的等待时间内处于这种状态。
*
* TERMINATED:已经退出的线程处于这个状态。
*
* 线程在一个给定的时间点只能处于一种状态。
* 这些状态是虚拟机状态,并不能反映任何操作系统的线程状态。
*
*/
public enum State {
/**
* 线程尚未启动的线程状态。
*/
NEW, /**
* 可运行线程的线程状态。处于可运行状态的线程正在Java虚拟机中执行,
* 但它可能正在等待操作系统中的其他资源,比如处理器。
*/
RUNNABLE, /**
* 等待监视器锁的阻塞线程的线程状态。
* 处于阻塞状态的线程正在等待监视器锁进入同步块/方法,
* 或者在调用Object.wait后重新进入同步块/方法。
*/
BLOCKED, /**
* 等待线程的线程状态。
* 调用以下方法之一,线程会处于等待状态:
* Object.wait()注意:括号内不带参数;
* Thread.join()注意:扩号内不带参数;
* LockSupport.park();
*
* 处于等待状态的线程正在等待另外一个线程执行特定的操作。
*
* 例如,一个调用了object.wait()方法的线程正在等待另外一下线程调用
* object.notify()或者object.notifyAll()方法。注意,这两个object是同一个object。
* 一个调用了Thread.join()方法的线程正在等待一个特定的线程去终止。
*/
WAITING, /**
* 具有指定等待时间的等待线程的线程状态。
* 一个线程调用了以下方法之一(方法需要带具体的等待时间),会处于定时等待状态:
* Thread.sleep(timeout)
* Object.wait(timeout)
* Thread.join(timeout)
* LockSupport.parkNanos()
* LockSupport.parkUntil()
*/
TIMED_WAITING, /**
* 终止的线程状态。
* 该线程已经执行完毕。
*/
TERMINATED;
}

状态转移图如图所示:

aaarticlea/png;base64,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" alt="" />

线程池

在生产环境中,为每个任务分配一个线程是存在缺陷的,例如资源消耗和稳定性等,所以需要使用线程池。

Java类库提供了灵活的线程池,可以调用Executors中的静态工厂方法创建线程池。如

  • newFixedThreadPool:固定长度的线程池
  • newCachedThreadPool:可缓存的线程池。

不管是newFixedThreadPool还是newCachedThreadPool,底层都是通过ThreadPoolExecutor实现的,本文只谈ThreadPoolExecutor的状态。

在JDK源码中,线程池(ThreadPoolExecutor)定义了五种状态:RUNNING、SHUTDOWN、STOP、TIDYING和TERMINATED。

源码如下:

    private static final int RUNNING    = -1 << COUNT_BITS;
private static final int SHUTDOWN = 0 << COUNT_BITS;
private static final int STOP = 1 << COUNT_BITS;
private static final int TIDYING = 2 << COUNT_BITS;
private static final int TERMINATED = 3 << COUNT_BITS;

状态说明

  • RUNNING — 运行状态,可以添加新任务,也可以处理阻塞队列中的任务。

  • SHUTDOWN — 待关闭状态,不再接受新的任务,会继续处理阻塞队列中的任务。

  • STOP — 停止状态,不再接受新的任务,不会执行阻塞队列中的任务,打断正在执行的任务。

  • TIDYING — 整理状态,所有任务都处理完毕,workerCount为0,线程转到该状态将会运行terminated()钩子方法。

  • TERMINATED — 终止状态,terminated()方法执行完毕。

状态转移

     * RUNNING -> SHUTDOWN
* On invocation of shutdown(), perhaps implicitly in finalize()
* (RUNNING or SHUTDOWN) -> STOP
* On invocation of shutdownNow()
* SHUTDOWN -> TIDYING
* When both queue and pool are empty
* STOP -> TIDYING
* When pool is empty
* TIDYING -> TERMINATED
* When the terminated() hook method has completed
  • 线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0。

  • 当线程池处于RUNNING状态时,调用shutdown()方法,线程池RUNNING状态转为SHUTDOWN状态。

  • 当线程池处于RUNNING or SHUTDOWN时,调用shutdownNow()方法时,线程池由(RUNNING or SHUTDOWN )状态转为STOP状态。

  • 当线程池在SHUTDOWN状态下,阻塞队列为空并且线程池中执行的任务也为空时,就会由 SHUTDOWN状态转为TIDYING状态。

  • 当线程池处于STOP状态,当线程池中执行的任务为空的时候,线程池有STOP状态转为TIDYING状态。

  • 当线程池处于TIDYING状态,当执行完terminated()之后,就会由TIDYING状态转为TERMINATED状态。

状态转移图如图所示:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzoAAAGcCAYAAAARa9VuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdeXxU1d0/8M+ZNTNZZrKQlSQQQMBIyL0TQKXaKLZqW61VKbhQrRvaWq3Pz/Zpra1tffSpdan7hq3UvaCPti6gFUupaIHMHZZQkD0rCdlnJpPMen9/TCaGkJ3AJJPP+/XyxeTOued+7433ZL5zzwIQERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERHUNEOwAiCpMkaZMQYn6046DRparqeofDcU604yAiIppoNNEOgIjCmOTEJiFEabRjICIimoh00Q6AiI5mt5dEOwQaJTZbWbRDICIimrD4RIeIiIiIiGIOEx0iIiIiIoo5THSIiIiIiCjmMNEhIiIiIqKYw0SHiIiIiIhiDhMdIiIiIiKKOUx0iIiIiIgo5jDRISIiIiKimMNEh4iIiIiIYg4THSIiIiIiijlMdIiIiIiIKOYw0SEiIiIiopjDRIeIiIiIiGIOEx0iIiIiIoo5THSIiIiIiCjmMNEhIiIiIqKYw0SHiIiIiIhiDhMdIiIiIiKKOUx0iIiIiIgo5jDRISIiIiKimMNEh4iIiIiIYg4THSIiIiIiijlMdIiIiIiIKObooh0AEY2eUEjFq6/W4/33m1BR4QWgIiVFj2XLMrF0aToAwGYrAwCsW1cMq/XLJqD39r7KtbYGsGjRVgCA3V5y1H796aucEEBCghZTpsRh0aJkLFmSDoPh2O9d1qxpwurVDdi7twOBgIopU+LwrW+l4oor0qHRCADA8uVfoKzMhWuvzcSP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" alt="" />

总结

理解线程和线程池对于我们日常开发或者诊断分析,都是不可或缺的基础。本文从源码分析了线程和线程池的状态和各种方法之间的对应关系,希望对大家有帮助,文中如果有地方不妥还请大家指正。

 

从源码解读线程(Thread)和线程池(ThreadPoolExecutor)的状态的更多相关文章

  1. ArrayPool 源码解读之 byte[] 也能池化?

    一:背景 1. 讲故事 最近在分析一个 dump 的过程中发现其在 gen2 和 LOH 上有不少size较大的free,仔细看了下,这些free生前大多都是模板引擎生成的html片段的byte[]数 ...

  2. JDK容器类Map源码解读

    java.util.Map接口是JDK1.2开始提供的一个基于键值对的散列表接口,其设计的初衷是为了替换JDK1.0中的java.util.Dictionary抽象类.Dictionary是JDK最初 ...

  3. 2,MapReduce原理及源码解读

    MapReduce原理及源码解读 目录 MapReduce原理及源码解读 一.分片 灵魂拷问:为什么要分片? 1.1 对谁分片 1.2 长度是否为0 1.3 是否可以分片 1.4 分片的大小 1.5 ...

  4. 线程本地变量ThreadLocal源码解读

      一.ThreadLocal基础知识 原始线程现状: 按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步.但是Spring中的各种模板 ...

  5. Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程

    下面将依次介绍: 1. 线程状态.Java线程状态和线程池状态 2. start方法源码 3. 什么是线程池? 4. 线程池的工作原理和使用线程池的好处 5. ThreadPoolExecutor中的 ...

  6. quartz源码分析——执行引擎和线程模型

    title: quartz源码分析--执行引擎和线程模型 date: 2017-09-09 23:14:48 categories: quartz tags: [quartz, 源码分析] --- - ...

  7. netty源码分析之揭开reactor线程的面纱(二)

    如果你对netty的reactor线程不了解,建议先看下上一篇文章netty源码分析之揭开reactor线程的面纱(一),这里再把reactor中的三个步骤的图贴一下 reactor线程 我们已经了解 ...

  8. SDWebImage源码解读之SDWebImageManager

    第九篇 前言 SDWebImageManager是SDWebImage中最核心的类了,但是源代码确是非常简单的.之所以能做到这一点,都归功于功能的良好分类. 有了SDWebImageManager这个 ...

  9. HttpClient 4.3连接池参数配置及源码解读

    目前所在公司使用HttpClient 4.3.3版本发送Rest请求,调用接口.最近出现了调用查询接口服务慢的生产问题,在排查整个调用链可能存在的问题时(从客户端发起Http请求->ESB-&g ...

  10. Alamofire源码解读系列(六)之Task代理(TaskDelegate)

    本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用AFNetworking或者Alamofire处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很 ...

随机推荐

  1. Python Cook函数笔记 【第一章】

    2017年4月28日 19:29:52 解压赋值给多个变量 可迭代的对象(list,tuple,string,文件对象,迭代器,生成器等),都可以进行解压赋值给多个对象. #!/usr/bin/env ...

  2. .NET开发微信小程序(基础配置)

    1.微信小程序的必备Model public class WxConfig { /// <summary> /// 小程序的appId /// 登录小程序可以直接看到 /// </s ...

  3. Java中判断是否为空的方法

    1.判断字符串或者对象是否为空 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.ut ...

  4. dubbo实现原理简单介绍

    一.什么是dubbo   Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,     ...

  5. 【转】Java线程面试题 Top 50

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...

  6. Oracle-01:基础命令小结

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 记录一下我的Oracle学习之路,详细的安装教程忙完这俩天会认真总结一版 本次记录这次学习cmd基础命令 一, ...

  7. ubuntukylin18.04Lts和deepin15.5与win10 1803双系统安装

    我首先安装的是ubuntu kylin(中文名优麒麟) 1.计算机右键选择管理磁盘,压缩卷设置空闲空间(第7步分区用) 2.重启时fn+f1进入bios设置界面. 3.关闭安全模式和快速启动,将boo ...

  8. MongoDB的安装启动及做成windows服务

    直接上干货. 官网地址:https://www.mongodb.com/download-center?jmp=nav#community 点击图中链接进入所有版本的下载列表 我下载的是3.6.5版本 ...

  9. goroutine背后的系统知识

    http://www.sizeofvoid.net/goroutine-under-the-hood/ o语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背 ...

  10. jdbc 链接数据库步骤 7步

    JDBC连接数据库   •创建一个以JDBC连接数据库的程序,包含7个步骤:   1.加载JDBC驱动程序:       在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), ...