目录
NEW:
TERMINATED:
RUNNABLE:
TIME_WAITING:
WAITING:
BLOCKED:
在操作系统的角度来看,线程分为了就绪状态和阻塞状态。
在java中,线程也是对操作系统线程的封装,而对于线程状态java也进行了重新封装和细分。具体可以分为一下几种状态:
NEW:
表示安排了工作,但还未开始工作。即new了Thread对象,但是还没有.start()启动
TERMINATED:
表示线程已经结束,run()方法中执行的任务已经完成。此时线程已经结束,但是Thread对象仍然存在。
RUNNABLE:
表示可以工作的就绪状态,又可以分成工作中的状态和即将开始工作的状态。
- 线程正在cpu上执行
- 线程随时可以去cpu上执行(但是还没去执行)
TIME_WAITING:
两种方式可以使线程进入TIME_WAITING状态。
- 指定时间的sleep()休眠,此时线程不参与cpu调度。
- 指定时间的join()等待,此时线程也不参与cpu调度。
WAITING:
死等,没有超时时间的休眠或等待。
BLOCKED:
一种特殊的阻塞,也是排队等待其他事务完成,由于锁导致的阻塞。