java这样行吗?Synchronized(线程),然后synch块中的thread=null
我看到了:
// thread is a member of this class
synchronized( this.thread )
{
this.thread.running = false;
this.thread.notifyAll(); // Wake up anything that was .waiting() on
// the thread
this.thread = null; // kill this thread reference.
// can you do that in a synchronized block?
}
设置thread=null
的同时仍然保持锁定状态可以吗
我在BB代码中找到了这个金块
# 1 楼答案
是的,很好。synchronized语句将获取其锁定的引用的副本,并使用该副本确定最后要解锁的内容
Java语言规范的Section 14.19实际上并不清楚这一点,但它确实声明表达式在开始时进行了计算,并且没有提到以后再次进行计算
# 2 楼答案
只有当有一个块为线程分配新值时,才会出现问题。在这种情况下,您有一个竞争条件,因为两个块不会锁定在同一个对象上,但会更新同一个字段,并且最后分配值的块是随机的