相关疑难解决方法(0)

如何演示java多线程可见性问题?

如果从多个线程访问Java中的变量,则必须确保它们被安全地发布.这通常意味着使用synchronizedvolatile.

我的印象是,我的一些同事并没有认真对待这个问题,因为他们"以前从未听过,volatile而且他们的计划已经工作了多年".

所以我的问题是:

有人可以提供示例Java程序/片段,可靠地显示数据可见性问题.

我认为运行一个程序并看到意外的NPE或陈旧的变量值将有助于更多,而不仅仅是理论上的解释,这是无法证明的.

非常感谢你的帮助!

更新:再强调一点.我已经阅读了Java Concurreny in Practice,并且知道理论上存在可见性问题的示例.我正在寻找的是一种真正展示它们的方法.我不确定,这实际上是可行的,但也许有一个jvm配置或类似的东西允许它.

java multithreading visibility

30
推荐指数
3
解决办法
5383
查看次数

java synchronized方法 - 它是如何工作的

我想我知道这一点,但希望确认一下.

显然,synchronized会阻止其他线程访问它,但是我看到了很多例子,例如

   public synchronized void setValue(int value)
   {
       balance=value;
   }
Run Code Online (Sandbox Code Playgroud)

我是否正确地思考,如果该方法只执行如上所述的一行,那么它在同步中没有任何意义.

谢谢

java synchronized

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×2

multithreading ×1

synchronized ×1

visibility ×1