专栏首页Java患者线程的生命周期

线程的生命周期

线程的生命周期

线程的六种状态: NEW、RUNNABLE、BIOCKED、WAITING、TIME_WAITING、TERMINATED。

  • NEW:初始状态,线程被构建,但是还没调用start方法;
  • RUNNABLE: 运行中状态,包括了就绪状态跟运行两种状态;
  • BLOCKED: 阻塞状态,线程进入等待状态,也就是线程因为某种原因放弃了CPU的执行权,分为多种情况

等待阻塞: 运行的线程执了wait方法,jvm把当前线程放入到等待队列中

同步阻塞:运行的线程获取到对象的同步锁时,若该同步锁被其他线程占用了,jvm会把当前线程放入锁池中

其他阻塞: 运行的线程执行了Thread.sleep()或者join方法,JVM会把当前线程设置为阻塞状态,当sleep结束或者 join线程终止则线程回复

  • WAITING: 一个正在无限期等待另一个线程执行一个特别的动作的线程
  • TIME_WAITING: 超时等待状态,超时以后自动返回
  • TERMINATED:终止状态, 表示当前线程执行完毕。

图解

首先线程的出生到销毁是上面的3个状态;

接着线程可以调用wait()方法变成WAITING状态

当有两个线程的时候,我们加锁可以转变线程的状态为BLOCKED

最后当我们执行wait(),join(),sleep() 会进入TIME_WAITING状态

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 多线程--锁的升级

    在多线程并发编程中,synchronized一般我们认为是重量级锁,但是随着JDK1.6的优化之后,在一些情况下它就不显得那么重量级了,因为在JDK1.6中为了...

    用户7386338
  • 线程的终止与复位

    简单了解上面的例子,创建一个线程 启动,睡眠一秒钟后中断该线程, 中断该线程之后, 通过isInterrupted()方法得到该线程的状态为true,这个时候会...

    用户7386338
  • 小白需懂的异步请求的处理

    在我们传统的服务中,当一个HTTP请求过来时,tomcat或者是其他的中间件都会有一个主线程来处理请求,所有的业务逻辑都会在这个线程里面处理完,...

    用户7386338
  • 【基本功】不可不说的Java“锁”事

    Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为...

    程序员小强
  • java线程池

    线程池能够帮助我们提高系统资源利用效率,并简化线程管理。通过并发包下的Executors(不是Executor)可以方便的创建如下几类线程池。分别为:

    良辰美景TT
  • 【好文推荐】黑莓OS手册是如何详细阐述底层的进程和线程模型的?

    该文章的大部分内容都是翻译自是黑莓 10 实时操作系统 QNX Neutrino 的开发手册,该手册不仅详细地阐述了 BlackBerry 10 OS 的原理以...

    我没有三颗心脏
  • 老伙计,关于JDK并发包,这些不为人知的秘密你知道多少?

    说到同步控制,最先想到的便是synchronized关键字,这是一种最简单的控制方法, 它决定了一个线程是否可以访问临界区资源。配合wait()方法和notif...

    Java程序猿阿谷
  • 操作系统和并发的爱恨纠葛

    我一直没有急于写并发的原因是我参不透操作系统,如今,我已经把操作系统刷了一遍,这次试着写一些并发,看看能不能写清楚,卑微小编在线求鼓励...... 我打算采取操...

    cxuan
  • Java高并发面试题

    线程安全类: 一个类是线程安全的是指, 在多线程进行调用时,不需要额外的同步和其他协调,类的行为任然是正确的.

    用户7625070
  • Java 线程池原理与使用

    在java 中我们会一般要求创建线程必须使用线程池,因为这样可以避免资源消耗,通过重复利用已经创建的线程来降低线程创建和销毁所造成的消耗, 其次当任务到达时任务...

    用户7625070

扫码关注云+社区

领取腾讯云代金券