スレッドを一時停止する方法を探しています。
ブールフラグ(「一時停止」と呼ばれる)を効果的に使用し、チェックを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();
}
}
}