我会说是的…这是线程安全的。
原因:
如果应用程序有必要
interrupt()
在一个synchronized
块中调用,那么规范(javadoc)会这样说,并且还说出需要同步到哪个对象以获得线程安全。实际上,javadoc对此一无所知。如果应用程序有必要
interrupt()
在一个synchronized
块中调用,那么Oracle Java并发性教程将在此页面上提及。没有。如果
Thread
要使interrupt()
调用线程安全,必须在对象上进行外部同步,则很难解释为什么该方法还要进行内部同步。(如果有必要,他们可以/将整个方法同步化。)
以上证据(IMO)令人信服,尽管不是绝对证据。如果您想要证明
interrupt()是线程安全的,则可以通过对的本机代码实现进行全面分析来获得它
interrupt0()。我没有看过本机代码,但是我希望它
interrupt0在内部是线程安全的,并且足以使该
interrupt方法成为线程安全的。



