zoukankan      html  css  js  c++  java
  • 关于volatile的可见性问题

    volatile的定义是:volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的‘可见性’,可见性的意思是当一个线程修改一个共享变量时,另外一个线程能够读到这个修改的值。

    好了那写个例子测试一下:

    package com.robert.volatiles;
    
    public class VolatileTest {
    
    	private static volatile int count= 0;
    	private static int number = 1000000;
    	
    	public static void main(String[] args) {
    		
    		Thread thread1 = new Thread(new Runnable(){
    
    			@Override
    			public void run() {
    				for(int i=0;i<number;i++){					
    					System.out.println(count++);
    				}
    			}		
    		});
    		
    		Thread thread2 = new Thread(new Runnable(){
    
    			@Override
    			public void run() {
    				for(int i=0;i<number;i++){					
    					System.out.println(count++);
    				}
    			}			
    		});
    		
    		thread1.start();
    		thread2.start();
    	}
    }
    

     一个很简单的例子做测试

    按照个人对这个定义的理解 应该是能打印2000000次,但是实际结果为每次打印的次数都不一致。

    这个让我对这个定义的理解产生了怀疑。

    希望有高人能指点一二,非常感谢。

  • 相关阅读:
    apache+tomcat分布式搭建
    maven 加入本地jar包
    一步一步搭建Jenkins环境
    缓存详解
    nginx配置文件注释
    mybatis like的用法
    Golang聊天室
    windows 10安装gensim、nltk
    理解矩阵乘法
    超赞的 Go 语言 INI 文件操作
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/5335629.html
Copyright © 2011-2022 走看看