发布网友 发布时间:2022-05-05 20:34
共1个回答
热心网友 时间:2022-06-28 01:39
提到Java原子类,不得不说下关键字volatile和内存可见性。内存可见性问题,可以看下《java并发编程实践》讲的很详细。下面的示例代码是错误的,因为没有使用volatile来保证内存的可见性,所以如果1个线程修改了共享变量,那么另外一个线程可能永远也看不到修改后的值。如果将stop修改成volatile类型的,就可以保证一个线程对volatile变量的修改,对另一个线程是可见的。[java]viewplaincopypublicclassTest{privatestaticbooleanstop=false;//以-server模式启动JVMpublicstaticvoidmain(String[]args)throwsException{newThread(newRunnable(){publicvoidrun(){while(!stop){}System.out.println("over");}}).start();Thread.sleep(200);stop=true;}