我正在尝试在 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);
}
}
}
当我的线程读取原子变量时,读取完成,直到标志标记为真,并在标志关闭时在值更改后继续。
做这个的最好方式是什么?使用同步块?
谢谢,费德拉。