Java基础知识JAVA进阶

Java 线程状态

2019-01-03  本文已影响3人  SlowGO

线程的状态

  1. 新建 New
  2. 可运行 Runnable
  3. 阻塞 Blocked
  4. 等待 Waiting
  5. 等待(时间)Timed Waiting
  6. 结束 Terminated
image

线程的生命周期

1. New

一个新的线程被创建,还没开始运行。

2. Runnable

一个线程准备就绪,随时可以运行的时候就进入了 Runnable 状态。

Runnable 状态可以是实际正在运行的线程,也可以是随时可以运行的线程。

多线程环境下,每个线程都会被分配一个固定长度的CPU计算时间,每个线程运行一会儿就会停止让其他线程运行,这样才能让每个线程公平的运行。这些等待CPU和正在运行的线程就处于 Runnable 状态。

3. Blocked

例如一个线程在等待 I/O 资源,或者它要访问的被保护代码已经被其他线程锁住了,那么它就在阻塞 Blocked 状态,这个线程所需的资源到位后就转入 Runnable 状态。

4. Waiting(无限期等待)

如果一个线程在等待其他线程的唤醒,那么它就处于 Waiting 状态。以下方法会让线程进入等待状态:

5. Timed Waiting(有期限等待)

无需等待被其他线程显示唤醒,在一定时间后有系统自动唤醒。

以下方法会让线程进入有限等待状态:

6. Terminated

一个线程正常执行完毕,或者意外失败,那么就结束了。

阻塞状态和等待状态的区别

上一篇下一篇

猜你喜欢

热点阅读