Как блокировать и ждать с помощью AtomicBoolean

Я ищу способ приостановить поток.

Я начал с аффективного использования логического флага (называемого «приостановлено») и заключил проверку в цикл while (пауза).

Внутри цикла while есть Thread.wait () , чтобы заблокировать выполнение.

Я изучал AtomicBoolean , который, кажется, помогает, но не блокирует.

Есть ли альтернативная или расширенная версия AtomicBoolean с блочным методом?

т.е. что-то вроде AtomicBoolean.getFalse () из AtomoicBoolean.get (false) ?

У них есть очередь блокировки, поэтому значение блокировки.

Текущая настройка:

while (paused.get()) {
        synchronized (paused) {
            try {

                paused.wait();
            } catch (Exception e) {
            }

            paused.notify();
        }
    }

с

public void pause() {
    if (paused.compareAndSet(false, true)) {
        synchronized (paused) {
            paused.notify();
        }
    }

}


public void resume() {
    if (paused.compareAndSet(true, false)) {
        synchronized (paused) {
            paused.notify();
        }
    } 
}
15
задан Ben 21 November 2011 в 17:17
поделиться