问题
线程有哪些状态
答案
线程的状态
在Java中,线程一共有六个状态,每个线程在某个时刻处于这六个状态的其中一种.这六种状态分别是:
NEW-线程刚被实例化出来,还没有调用
thread.start()
方法.RUNNABLE-线程已经调用了
thread.start()
方法,但这个时候线程可能处于被CPU执行的状态,也有可能处于等待被CPU执行的状态,这两种状态都称之为RUNNABLE状态.BLOCKED-线程调用了一个带有锁的方法,而此时这个锁已经被其它线程占有,线程此时等待着其它线程释放该锁,这种状态称之为BLOCKED状态.
WAITING-线程等待其它线程执行特定的响应,比如当线程调用
thread.wait()方法
等待其它线程唤醒,或者调用thread.join()
方法使得线程等待另外一个线程执行完后再执行,这些场景都属于WAITING状态.TIMED-WAITING-和上面的
WAITING
状态类似,只不过调用的方法多加了时间,比如thread.join(2000)
,thread.wait(2000)
.Java将Thread.sleep(5000)
也归在这个地方,我觉得有点别扭,可以单独再分出一种新的状态,因为该方法并不等待其它线程执行特定操作.TERMINATED-线程完成了所需要执行的所有方法,方法退出后,线程就处于了TERMINATED状态.