原子方法如何使我们的代码具有线程安全性?
答案 0 :(得分:1)
您可能希望在concurrency and locking in Java上阅读一些内容。另外,请查看Java memory model/concurrency上的其他SO主题。
答案 1 :(得分:1)
原子操作是根本无法中断的操作。
当一个线程更新未受同步机制保护的数据结构时,会发生典型的同步问题,因此线程可以读取过时或不一致的值,因为其他线程正在从它们的脚下更改值。
避免此问题的机制是同步对数据结构的访问,因此您可以下订单并确保单个线程在其他线程访问之前完成对数据结构的使用。
这些能够工作的同步机制必须确保它们在运行时无法在CPU之外进行调度,因为如果发生这种情况,则线程可能会在不应该更新结构时进行更新。 / p>
这些机制是根据这些原子操作实现的,以确保它们正常工作。例如,semaphores依赖于原子增量和“测试和减少”运算符。
这是一个很大的主题,通常涵盖在主题“分布式系统”下,这个术语可能会让您获得更好的资源来理解并发性。