当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

show一下java中的volatile的作用[Java编程]

赞助商链接



  本文“show一下java中的volatile的作用[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

具体作用就不多讲了,大约就是保证可见性和避免重排序. 其实很早前就知道有这个关键字,试过很多次,总认为加了和没加效果一样.

这次终于在阅读《java并发程序实践》(趁便义务广告一下,好书)的时刻有了灵感,写了一段很普通的代码:

Java代码

public class NoVisibility {
private boolean ready=false;
int num;
private class ReaderThread extends Thread {
public void run() {
int count = 0;
while (!ready) 
{
count++;
}
System.out.println(num);
}
}

public static void main(String[] args) throws InterruptedException {
NoVisibility x = new NoVisibility();
x.new ReaderThread().start();
x.num = 43;
x.ready = true;
System.out.println("main Thread end");
}
}

再写一段python来不断地调用它(因为不一定总能呈现),不久后就会发现不返回了,ready值的更新一向对ReaderThread线程不可见.假如ready加个volatile就不会有问题了,可以一向运行.

Python代码

import os
i=0
while True:
os.system("java -server NoVisibility")#or os.popen
i+=1
print "run count"+str(i)

感受:

1.java运行时加参数-server用server版的虚拟机出问题概率很高,据说是server才经过大量优化.

2.while (!ready)的循环内假若有System.out操作时,也几近不出问题,提高了可见性?(这个是我的猜想)


  以上是“show一下java中的volatile的作用[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • mysql show processlist 显示mysql查询进程
  • show一下java中的volatile的作用
  • 操纵selenium测试showModalDialog模态对话框
  • 带你完好熟习MySQL数据库中Show号令用法
  • 相册的自动播放效果SlideShow
  • mysql中show指令具体利用办法
  • mysql中show指令具体利用办法
  • 动网论坛(DVBBS)Show.asp页面过滤不严招致跨站漏洞
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .