标签:waiting 源代码 notify block until link 循环 csdn class
刚才在看CSDN的问答时。发现这个问题。
原问题的作者是在观察jstack的输出时提出的疑问。那么BLOCKED和WAITING有什么差别呢?
答复在JDK源代码中能够找到,例如以下是java.lang.Thread.State类的一部分凝视。
/**
* Thread state for a thread blocked waiting for a monitor lock.
* A thread in the blocked state is waiting for a monitor lock
* to enter a synchronized block/method or
* reenter a synchronized block/method after calling
* {@link Object#wait() Object.wait}.
*/
BLOCKED,
/**
* Thread state for a waiting thread.
* A thread is in the waiting state due to calling one of the
* following methods:
* {@link Object#wait() Object.wait} with no timeout
* {@link #join() Thread.join} with no timeout
* {@link LockSupport#park() LockSupport.park}
*
*
* A thread in the waiting state is waiting for another thread to
* perform a particular action.
*
* For example, a thread that has called Object.wait()
* on an object is waiting for another thread to call
* Object.notify() or Object.notifyAll() on
* that object. A thread that has called Thread.join()
* is waiting for a specified thread to terminate.
*/
WAITING,
从中能够清晰的得到线程处于BLOCKED和WAITING状态的场景。
线程处于BLOCKED状态的场景。
线程处于WAITING状态的场景。
提到WAITING状态,顺便提一下TIMED_WAITING状态的场景。
线程处于TIMED_WAITING状态的场景。
Java线程状态中BLOCKED和WAITING有什么差别?
标签:waiting 源代码 notify block until link 循环 csdn class
原文地址:http://www.cnblogs.com/cynchanpin/p/7232061.html