面试题——Java线程的状态

Java线程的状态

1)NEW

线程创建之后,启动之前的状态。

1
2
Thread thread = new Thread();
thread.getState();//NEW

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线程的状态

http://blog.mothership.top/posts/d0c03259.html

作者

Mother Ship

发布于

2017-06-22

更新于

2023-02-13

许可协议

评论