[英]Volatile Keyword is of no use When using synchronized?
我试图了解在Java中使用volatile关键字。 我知道它将数据写入主内存中而不是线程缓存中。
但这真的很有用。 我正在使用多线程和
我不应该使用同步的原因,因为我不想脏读其他线程。 那么在什么情况下挥发物可能有用并且最重要?
请举个例子。
synchronized
比普通volatile
要贵得多。
当您只需要读/写单个变量并且不关心复杂结构的原子性时, volatile
很有用。
当您需要执行复杂的操作,更新多个变量或在与另一个变量进行比较时设置一个变量并确保此类操作的原子性时,“ synchronized
很有用。 也做得更高水平同步诸如条件当它被使用,即synchronized
/ wait
/ notify
中的java。 但为此,也可以使用“ Lock
/ Condition
。
有关使用volatile变量的更好解释,可以查看以下链接以及JB Nizet的答案。 它很好地赞扬了Zbynek的答案,并进一步说明了可变性,原子变量与复杂性之间的关系。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.