Java 安全递增整数的方法有哪些?
除了使用同步方法或AtomicInteger之外,还有其他方法进行线程安全整数增量吗?您也可以在单个对象上进行同步 例如:Java 安全递增整数的方法有哪些?,java,thread-safety,Java,Thread Safety,除了使用同步方法或AtomicInteger之外,还有其他方法进行线程安全整数增量吗?您也可以在单个对象上进行同步 例如: Integer myInteger = 0; synchronized(myInteger) { myInteger += 1; } 也可以在单个对象上进行同步 例如: Integer myInteger = 0; synchronized(myInteger) { myInteger += 1; } 我们有以下可用的同步选项: 1) volatile(
Integer myInteger = 0;
synchronized(myInteger) {
myInteger += 1;
}
也可以在单个对象上进行同步 例如:
Integer myInteger = 0;
synchronized(myInteger) {
myInteger += 1;
}
我们有以下可用的同步选项: 1)
volatile
(但这并不能使++安全)
2) AtomicInteger(最好的,无锁)
3) synchronized
4) java.util.concurrent.locks框架
因此,第三种方法是使用ReentrantLock,我们有以下可用的同步选项: 1)
volatile
(但这并不能使++安全)
2) AtomicInteger(最好的,无锁)
3) synchronized
4) java.util.concurrent.locks框架
所以第三种方法是使用ReentrantLock,因为它是先读后写的
您必须使用锁定机制(例如
同步
,但也可以使用锁定
)或原子操作 不,因为先读后写
您必须使用锁定机制(例如
同步
,但也可以使用锁定
)或原子操作 你为什么还需要别的办法?AtomicInteger是您的最佳选择,因为它不会锁定,所以不会有风险或性能损失。如果您需要有关同步的更多信息,这可能会有所帮助:为什么需要其他方法?AtomicInteger是您的最佳选择,因为它不会锁定,所以不会有风险或性能损失。如果您需要有关同步的更多信息,这可能会有所帮助:如果您使用同步块访问,则volatile帮助如果您使用同步块访问,则volatile帮助