在Java中遇到的最常见的并发问题是什么?

问题:

这是对Java中常见的并发问题的调查。一个例子可能是Swing中经典的僵局或竞争状况或者EDT线程错误。我对广泛的可能问题感兴趣,但也是最常见的问题。所以,请留下一个具体的Java并发错误的答案每个评论,并投票,如果你看到你遇到的。

回答:

我看到的最常见的并发问题是没有意识到一个线程写的字段是not guaranteed被不同的线程看到。这个常见的应用:

class MyThread extends Thread {
  private boolean stop = false;

  public void run() {
    while(!stop) {
      doSomeWork();
    }
  }

  public void setStop() {
    this.stop = true;
  }
}

只要停止不是volatilesetStoprun不是synchronized,这不能保证工作。这个错误是非常恶劣的,因为99.999%在实践中没有关系,因为读者的线程最终会看到这个变化 – 但是我们不知道他看到了多久。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is the most frequent concurrency issue you’ve encountered in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

68 − = 63