java多线程开发可见性问题在于多线程之间使用共享的变量,如果其他线程也在修改变量,因为执行顺序问题,在当前线程中不一定会得到真实的值,比如下面的代码,看看是否达到了可以修改共享变量,并且在线程中成功应用。
package test.commontest;
public class TestThread {
//共享变量flag
public static Boolean flag = false;
public static void main(String[] args) throws InterruptedException {
//新建线程进行操作
new Thread(new Runnable() {
@Override
public void run() {
int i = 0;
System.out.println("TestThread.flag====" + TestThread.flag);
//无限循环,当且仅当共享变量值改变后跳出循环
while (TestThread.flag != true) {
i++;
}
System.out.println("i====" + i);
}
}
).start();
//主线程休息2秒再操作共享变量,便于人眼可以直接看到
Thread.sleep(2000);
//修改共享变量值