Java线程状态
2023-03-31 12:31:10 0 举报
描述Java的7种线程状态及其关系
作者其他创作
大纲/内容
执行Thread.start()
Object.notify()Object.notifyAll()LockSupport.unpark()
通常这时一种被动的、短时间的同步阻塞,由同步机制引起
终止、死亡状态TERMINATED
通常这是一种主动的、较长时间的条件阻塞。处于这种状态的线程不会被分配CPU执行时间片,它们要等着被显式地唤醒,否则就会处于无限期等待的状态。
可运行RUNNABLE
Object.sleep(long)Object.wait(long)Object.join(long)LockSupport.parkNanos(long)LockSupport.parkUntil(long)
就绪(ready)和运行时(running)两种状态可以笼统地称为“可运行状态”
1. 就绪状态是说你有资格运行,如果调度程序没有挑到你,你就永远是就绪状态。2. 执行线程的start()方法,此线程进入到就绪状态。3. 当前线程的sleep()方法结束,其他线程join()结束,等用户输入完毕,某个线程拿到了对象锁,这些线程也将进入就绪状态。4. 当前线程的时间片用完后,调用当前线程的yield()方法,当前线程会进入就绪状态。5. 锁池里的线程拿到对象锁后,进入到就绪状态。
Thread
新建状态NEW
超时等待状态TIMED_WAITING
实例化
yield()、失去执行权
阻塞等待状态WAITING
运行时状态RUNNING
处于这种状态的线程不会被分配CPU执行时间片,到达超时时间会被自动唤醒
Object.wait()Object.join()LockSupport.park()
就绪状态READY
阻塞锁定状态BLOCKED
获取到锁
获得CPU、获取执行权
执行完成或异常退出
等待进入sychronized 方法或者同步块
超时到期
0 条评论
下一页