java多线程访问同一共享变量问题
直接上代码,为什么会输出error那一段,求大神解答!
public class ThreadTest {
private int flag = 0;
public void set1() {
flag = 0;
}
public void set2() {
flag = -1;
}
public void check() {
System.out.println(flag);
if (0 != flag && -1 != flag) {
System.out.println("error--------flag : " + flag);
}
}
public static void main(String [] args) {
final ThreadTest test = new ThreadTest();
final Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
test.set1();
}
}
});
thread1.start();
final Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
test.set2();
}
}
});
thread2.start();
final Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
test.check();
}
}
});
thread3.start();
}
}