【Java多线程】线程的几种状态与流转关系

线程的几种状态与流转关系

一、线程的状态

线程的状态可以通过 Thread 类中的 state 内部类查看,有以下几个状态:

  1. 新建(New):创建后尚未启动的线程状态
  2. 运行(Runnable):包含 Running(位于可运行线程池中)和 Ready(位于线程池中等待调度选中获取CPU使用权)
  3. 无限期等待(Waiting):不会被分配CPU执行时间,需要显式唤醒
  4. 限期等待(Timed Waiting):在一定时间后会有系统自动唤醒
  5. 阻塞(Blocked):等待获取排它锁
  6. 结束(Terminated):已终止线程的状态,线程已经结束执行

二、线程状态流转关系

在了解线程状态流转关系前,先来了解两个概念:

  • 锁池
  • 等待池
    对Java虚拟机中运行程序的每个对象来说都有这两个池,多线程时,需要调用这个对象的 Synchronized 方法或 Synchronized 块必须获得该对象锁,此时没有获取到锁的线程就进入锁池;而获取到锁的线程如果调用了 wait() 方法线程就会进入等待池,进入等待池的线程不会竞争该对象的锁。
    线程状态流转图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值