专业的JAVA编程教程与资源

网站首页 > java教程 正文

线程有多少种状态?time_wait 状态是什么意思?

temp10 2024-12-12 15:08:15 java教程 11 ℃ 0 评论

#头条创作挑战赛#

java.lang.thread 内部枚举State

线程有多少种状态?time_wait 状态是什么意思?

六种状态 NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED;

NEW:当线程被创建出来还没有被调用 start()时候的状态。

RUNNABLE:当线程被调用了 start(),且处于等待操作系统分配资源(如 CPU)、等待 IO 连接、正在运行状态,即表示 Running 状态和 Ready 状态。调用start() 后获取线程状态为Runnable

BLOCKED

等待监视器锁而被阻塞的线程的线程状态,当进入 synchronized 块/方法或者在调用 wait()被唤醒/超时之后重新进入 synchronized 块/方法,但是锁被其它线程占有,这个时候被操作系统挂起,状态为阻塞状态。

阻塞状态的线程,调用 interrupt()方法也不会改变其状态。

WAITING:无条件等待,当线程调用 wait()/join()/LockSupport.park()不加超时时间的方法之后所处的状态,如果没有被唤醒或等待的线程没有结束,那么将一直等待,当前状态的线程不会被分配 CPU 资源和持有锁.

TIMED_WAITING:有条件的等待,当线程调用 sleep(睡眠时间)/wait(等待时间)/join(等待时间)/ LockSupport.parkNanos(等待时间)/LockSupport.parkUntil(等待时间)方法之后所处的状态,在指定的时间没有被唤醒或者等待线程没有结束,会被系统自动唤醒,正常退出。

TERMINATED:线程执行完,终止状态


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表