在最近的一次answer https://stackoverflow.com/a/16709249/823393我建议可以实现的功能volatile
by synchronizing
在包含我们需要的变量的对象上volatile
(提问者无权访问代码中的变量)。
这让我想到我实际上不需要阻塞包含的对象,我只需要实现内存屏障。作为synchronized
达到both同步and内存屏障,如果我需要的只是内存屏障(如本例所示),那么使用它实际上会更好synchronized(new Object())
达到我的记忆障碍and确保锁永远不会被争用?
正如这里所解释的:http://www.cs.umd.edu/~pugh/java/memory Model/jsr-133-faq.html#synchronization http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#synchronizationsynchronized(new Object()) 被视为 noop,可能会被编译器完全删除。你不会从中摆脱记忆障碍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)