龙空技术网

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

wenchi2018 80

前言:

现在兄弟们对“java中线程状态有哪些”都比较注意,姐妹们都需要了解一些“java中线程状态有哪些”的相关资讯。那么小编也在网摘上汇集了一些有关“java中线程状态有哪些””的相关知识,希望朋友们能喜欢,小伙伴们快快来学习一下吧!

#头条创作挑战赛#

java.lang.thread 内部枚举State

六种状态 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:线程执行完,终止状态

标签: #java中线程状态有哪些