码迷,mamicode.com
首页 > 编程语言 > 详细

线程状态

时间:2018-09-23 18:21:51      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:art   thread   两种   toc   ddn   获取   阻塞   目录   append   

目录

内容

查看枚举类型 Thread.state,线程状态:

public enum State {
    NEW,
    RUNNABLE,
    BLOCKED,
    WAITING,
    TIMED_WAITING,
    TERMINATED;
}

NEW

新创建的线程对象,在执行 start 方法之前就是这个状态。

RUNNABLE

包括就绪与运行时两种状态。

就绪:调用 start 方法后,线程进入可运行线程池,等待被线程调用选中,获取 CPU 使用权。
运行:就绪状态的线程获得了 CPU 使用权,执行字节码。

BLOCKED

阻塞状态,线程在等待获得锁进入同步块。

调用 wait 方法之后进入阻塞状态。

WAITING

等待状态,可以通过以下方式进入等待状态:

  1. 调用无超时的 wait 方法
  2. 调用 join 方法(本质还是通过 wait 方法实现的)
  3. 调用 LockSupport.park

TIMED_WAITING

等待状态,一定时间线程继续执行或者就绪等待执行。

TERMINATED

线程已终止。


线程状态转换

技术分享图片

append

【Q】阻塞状态和等待状态的区别

进入 waiting 状态是线程主动的,在同步代码之内;
进入 blocked 状态是被动的,在同步代码之外。

线程状态

标签:art   thread   两种   toc   ddn   获取   阻塞   目录   append   

原文地址:https://www.cnblogs.com/xmsx/p/9692887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!