Поточно-ориентированная реализация max

Мне нужно реализовать сбор статистики глобального объекта для веб-сервера. У меня есть Статистика singleton, который имеет метод 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, потому что считаю, что это будет быстрее, чем простая синхронизированная . Есть ли другой / лучший способ реализовать это?

23
задан Tibor Blenessy 20 May 2011 в 12:43
поделиться