我试图理解在java中使用volatile关键字。据我所知,它会将数据写入主内存而不是线程缓存中。
但这真的很有用。我正在使用多线程和
我不应该使用同步原因我不想让脏读到其他线程。那么在什么样的情况下,volatile可能是有用的,最重要的是使用?
请举一些例子。
答案 0 :(得分:2)
synchronized
比普通volatile
贵得多。
volatile
很有用。
synchronized
非常有用。此外,它还用于执行更高级别的同步,例如条件,即java中的synchronized
/ wait
/ notify
。但是,也可以使用Lock
/ Condition
。
答案 1 :(得分:0)
有关使用volatile变量的更好解释,您可以使用JB Nizet的答案查看以下link。它很好地补充了Zbynek发布的答案,并进一步解释了易失性,原子变量和放大器之间的关系。复杂。希望这会有所帮助。