java - 这个可以吗?同步(线程),然后同步块(synchronized block)中的线程=空

标签 java blackberry synchronized-block

我看到了这个:

// 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 代码中发现了这个金 block 。

最佳答案

是的,没关系。同步语句将获取它所锁定的引用的副本,并使用该副本计算出最后要解锁的内容。

Section 14.19 Java 语言规范的定义实际上并不清楚这一点,但它确实声明表达式在开始时被求值——并且没有提到稍后再次求值。

关于java - 这个可以吗?同步(线程),然后同步块(synchronized block)中的线程=空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226827/

相关文章:

java - 黑莓对话框

java.lang.RuntimeException : PARAGRAPH span must start at paragraph boundary (46 follows ) 错误

css - 删除黑莓 html 选择列表上的向下箭头?

eclipse - Java/Eclipse - 指定当前方法名称的宏?

java - 为什么在同步线程时 WebMethods 会被阻塞?

java - 将参数传递给同步块(synchronized block)的目的是什么?

java - 同步发生了一些奇怪的事情(Test2.class)

java - 使用 log4j 的多个库

java - 接受用户输入的方法

java - 删除子类时,Hibernate 不会删除主行