上面有一条评论public native void unpark(Object thread);
“取消对给定线程在驻留时阻塞的解除阻塞,或者,如果未阻塞,则导致后续的驻留不被阻塞的调用。注意:此操作是“不安全的”,仅是因为调用方必须以某种方式确保未破坏线程。从Java调用时(通常会实时引用该线程),通常不需要什么特别的操作来确保这一点,但是从本地代码调用时,这几乎不是自动的。”
但是,为什么通过本机代码调用会带来被破坏的线程?
最佳答案
该评论可能已过时。我看不到JDK或HotSpot本机对Unsafe.unpark
的任何调用。
此外,LockSupport.unpark
直接调用Unsafe.unpark
。同时LockSupport
是公共API,因此必须安全。