Javaでcuncurrent読み取り/アトミック書き込みを実装しようとしています。
static int atom = 0;
static boolean flag = false;
public static void main(String[] args) {
new Thread(new Reader()).start();
new Thread(new Reader()).start();
new Thread(new Reader()).start();
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
write();
}
}, 3000);
}
static void write() {
flag = true;
Thread.sleep(1000);
atom++;
flag = false;
}
static class Reader implements Runnable {
@Override
public void run() {
while (true) {
Thread.sleep(5);
if (flag) {
continue;
}
System.out.println(atom);
}
}
}
私のスレッドがatom varを読み取ると、フラグがtrueとマークされるまで読み取りが行われ、フラグがオフになると値が変更された後も読み取りが続行されます。
これを行う最善の方法は何ですか?同期ブロックを使用していますか?
ありがとう、フェドラ。