否则
a =28(与
a作为一个
int)是一个原子操作。但是执行
a++操作不是原子操作,因为它需要读取a的值,递增和写入a的结果。结果,如果您曾经
a++实现一个线程安全计数器,则可以让两个线程同时读取该值(例如26),然后使它们同时递增和写入,结果是27,而不是28
。
AtomicInteger通过提供类似于您列出的原子操作来解决此问题。在我的示例中,您将使用
incrementAndGet()例如,它可以保证最终值为28而不是27。

否则
a =28(与
a作为一个
int)是一个原子操作。但是执行
a++操作不是原子操作,因为它需要读取a的值,递增和写入a的结果。结果,如果您曾经
a++实现一个线程安全计数器,则可以让两个线程同时读取该值(例如26),然后使它们同时递增和写入,结果是27,而不是28
AtomicInteger通过提供类似于您列出的原子操作来解决此问题。在我的示例中,您将使用
incrementAndGet()例如,它可以保证最终值为28而不是27。