当前位置: 代码迷 >> 综合 >> 7.15 线程:volatile
  详细解决方案

7.15 线程:volatile

热度:66   发布时间:2023-11-21 10:51:17.0

线程:volatile

      • 介绍
      • 实例测试

介绍

      volatile保证线程间变量的可见性,简单地说就是当线程A对变量X进行了修改后,在线程A后面执行的其它线程能看到变量X的变动,更详细的说是要符合以下两个规则:

  • 线程对变量进行修改之后,要立刻写回到主存
  • 线程对变量读取的时候,要从主内存读,而不是缓存。
          volatile不能保证原子性。

实例测试

code:

/*** volatile用于保证数据的同步,也就是可见性* @author dxt**/
public class VolatileTest {
    private volatile static int num = 0;public static void main(String[] args){
    new Thread(new Runnable(){
    public void run(){
    while(num == 0){
    //不用写代码}}}).start();try {
    Thread.sleep(1000);	//等一秒} catch (InterruptedException e) {
    e.printStackTrace();}//设置num = 1, 使线程停止循环,不加volatile,线程会持续执行,因为cpu没有时间//将num=1写回内存num = 1;}
}
  相关解决方案