线程状态

  • 新创建(NEW):新创建了一个线程对象,但还没有调用start()方法,如new Thread(r)。
  • 可运行(RUNNABLE):调用start方法,线程处于runnable状态。
  • 阻塞(BLOCKED):表示线程在等待锁被释放出来。
  • 等待(WAITING):线程等待另一个线程通知调度器一个条件。
  • 超时等待(TIMED_WAITING):线程进入计时等待。
  • 终止(TERMINATED):表示该线程已经执行完毕。

线程状态图解

线程状态Tips

  • Thread.sleep(long millis),一定是当前线程调用此方法,当前线程进入TIMED_WAITING状态,但不释放对象锁。
  • Thread.yield(),一定是当前线程调用此方法,当前线程放弃获取的CPU时间片,但不释放锁资源,由运行状态变为就绪状态.
  • thread.join()/thread.join(long millis),当前线程里调用其它线程t的join方法,当前线程进入WAITING/TIMED_WAITING状态,当前线程不会释放已经持有的对象锁。
  • obj.wait(),当前线程调用对象的wait()方法,当前线程释放对象锁,进入等待队列。依靠notify()/notifyAll()唤醒或者wait(long timeout) timeout时间到自动唤醒。

转载于:https://juejin.im/post/5c9c91546fb9a070f43136f7

Java并发编程之线程状态总结相关推荐

  1. Java并发编程一线程池的五种状态

    推荐:Java并发编程汇总 Java并发编程一线程池的五种状态 原文地址 Java多线程线程池(4)–线程池的五种状态 正文 线程池的5种状态:Running.ShutDown.Stop.Tidyin ...

  2. (转)Java并发编程:线程池的使用

    背景:线程池在面试时候经常遇到,反复出现的问题就是理解不深入,不能做到游刃有余.所以这篇博客是要深入总结线程池的使用. ThreadPoolExecutor的继承关系 线程池的原理 1.线程池状态(4 ...

  3. java并发编程与线程安全

    2019独角兽企业重金招聘Python工程师标准>>> 什么是线程安全 如果对象的状态变量(对象的实例域.静态域)具有可变性,那么当该对象被多个线程共享时就的考虑线程安全性的问题,否 ...

  4. JAVA并发编程3_线程同步之synchronized关键字

    在上一篇博客里讲解了JAVA的线程的内存模型,见:JAVA并发编程2_线程安全&内存模型,接着上一篇提到的问题解决多线程共享资源的情况下的线程安全问题. 不安全线程分析 public clas ...

  5. [转]Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  6. Java并发编程:线程池的使用

    在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...

  7. 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

    文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...

  8. 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )

    文章目录 前言 一.线程池示例 二.newCachedThreadPool 线程池示例 三.newFixedThreadPool 线程池示例 三.newSingleThreadExecutor 线程池 ...

  9. 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

最新文章

  1. 《JAVA与模式》之单例模式
  2. 如何将yolo的标注(annotations).txt 坐标转换成tensorflow-yolov3(YunYang1994)的.txt 标注坐标?
  3. HTML5 VIDEO标签播放事件流水
  4. Cross-Modal Retrieval——为什么要使用GAN呢?
  5. 谷歌开源文件访问漏洞审计工具 PathAuditor(详解)
  6. Android打包出多个dex文件,一个APK中包含多个dex方法
  7. spring mvc ajax异步文件的上传和普通文件上传
  8. 单声道数据转双声道_单声道转双声道
  9. 用二分法求下面方程在(-10,10)的根:2x3-4x2+3x-6=0
  10. google-services简介
  11. Hej Stylus for Mac(光标控制系统工具)
  12. 我那么爱你为什么?伤感爱情日志
  13. 哈哈哈哈哈哈不错测试一下测试一下哈哈哈哈哈哈不错测试一下测试一下
  14. 一条语句查询出所有雇员的编号、姓名、性别、出生日期、电话号码部门名称和本月收入
  15. post man 基本操作
  16. JQuery极果商城项目实战(附完整代码)
  17. win10 无法连接打印机 报0x00000520错误解决办法!
  18. springboot2.2.X手册:基于OSS解决文件存储(一年9元^^,赚了)
  19. STM32HAL----红外遥控(NEC)
  20. 怎样查看自己的hadoop版本

热门文章

  1. 柳传志:联想又遇新坎儿 要做斯巴达克方针
  2. mysql基本操作 [http://www.cnblogs.com/ggjucheng/archive/2012/11/03/2752082.html]
  3. [书目]软件制胜之道:执行的策略
  4. zookeeper学习笔记2
  5. MySQL JOIN原理
  6. 数据中心是虚拟现实的基石
  7. CSS3 background-size图片自适应
  8. scala言语基础学习八
  9. Java获取数据库表的字段信息,及如何将ResultSet转为json
  10. 学习使用Markdown最基础的语法(编辑器通用)