max 的线程安全实现
2022-09-01 17:11:22
我需要为Web服务器实现全局对象收集统计信息。我有单例,它有方法,随后调用。这显然是线程安全的。我有这个方法来更新整个统计信息的最大值:Statistics
addSample(long sample)
updateMax
AtomicLong max;
private void updateMax(long sample) {
while (true) {
long curMax = max.get();
if (curMax < sample) {
boolean result = max.compareAndSet(curMax, sample);
if (result) break;
} else {
break;
}
}
}
此实现是否正确?我正在使用java.util.concurrent,因为我相信它会比简单更快。有没有其他/更好的方法来实现这一点?synchronized