在最近的 answer我建议可以通过在包含我们需要volatile
的变量的对象上同步
来实现volatile
的功能(提问者没有可以访问代码中的变量)。
这让我想到我实际上不需要阻塞包含对象,我只需要实现内存屏障。由于 synchronized
实现了两者 同步和 内存屏障,如果我只需要内存屏障(如本例),它实际上会更好吗使用synchronized(new Object())
来实现我的内存屏障并确保锁永远不会被竞争?
最佳答案
如此处解释:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#synchronization synchronized(new Object()) 被认为是空操作,可能会被编译器完全删除。你不会从中得到内存障碍。
关于java - synchronized(new Object()) 的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711516/