面试题——Java线程的状态
Java线程的状态
1)NEW
线程创建之后,启动之前的状态。
1 | Thread thread = new Thread(); |
2)RUNNABLE
启动完成,正常运行的线程。
(需要注意的是,线程等待系统资源时也会处于该状态,例如BIO等待网络资源的时候)
3)BLOCKED
被阻塞的状态,出现在多线程环境下。
线程A占用了一个synchronize的方法/代码块/对象,这时候线程B如果也想占用这个资源,就会处于BLOCKED状态
4)WAITING
等待中的状态,由于执行了Object.wait();或者Thread.join()并且没有指定Timeout,以及LockSupport.park()而导致。
如果调用了Object.notify()或者notifyAll()方法,等待状态就会结束。
5)TIMED_WAITING
如果调用了Thread.sleep();或者Object.wait(),Thread.join(),并指定了Timeout,
或者LockSupport的parkNanos(),parkUntil()方法,并指定了Timeout。线程就会进入TimedWaiting状态。
6)TERMINATED
线程的run方法执行完毕后,在虚拟机层面上的状态。
面试题——Java线程的状态