当前位置: 首页 > news >正文

山东大型网站建设提高工作效率整改措施

山东大型网站建设,提高工作效率整改措施,重庆企业seo网络推广外包,做360手机网站优化volatile字段 有多处理器的计算机能够暂时在寄存器或本地内存缓存中保存内存值,其结果是,运行在不同处理器上的线程可能看到同一个内存位置上有不同的值。编译器可以改变指令执行的顺序以使吞吐量更大化,编译器不会选择可能改变代码语义的顺…

volatile字段

  • 有多处理器的计算机能够暂时在寄存器或本地内存缓存中保存内存值,其结果是,运行在不同处理器上的线程可能看到同一个内存位置上有不同的值。
  • 编译器可以改变指令执行的顺序以使吞吐量更大化,编译器不会选择可能改变代码语义的顺序,但编译器有一个假定,认为内存值只在代码中有显式的修改指令时才会改变,然而,内存值有可能被另一个线程改变。

注释:Brian Goetz创造了以下"同步格言",如果写一个变量,这个变量接下来可能会被另一个线程读取,或者,如果读一个变量,而这个变量可能已经被另一个线程写入值,那么必须使用同步。

volatile关键字为实例字段的同步访问提供了一种免锁机制。

如果声明一个字段为volatile,那么编译器和虚拟机就知道该字段可能被另一个线程并发更新。

例如,假设一个对象有一个boolean标记done,它的值由一个线程设置,而由另一个线程查询,你可以使用锁:

private boolean done;

public synchronized boolean isDone(){ return done; }

public synchronized void setDone(){ done = true; }

或许使用内部对象锁不是个好主意,如果另一个线程对该对象加锁,isDone和setDone方法可能会阻塞。如果这是个问题,可以只为这个变量使用一个单独的锁,但这很麻烦。

这种情况下,将字段声明为volatile就很合适:

private volatile boolean done;

public boolean isDone(){ return done; }

public void setDone(){ done = true; }

编译器会加入适当代码,确保如果一个线程对done变量做了修改,这个修改对读取这个变量的所有其他线程都可见。

警告:volatile不能提供原子性,例如,方法public void flipDone(){ done = !done }不能确保翻转字段中的值,不能保证读取,翻转和写入不被中断。

http://www.ritt.cn/news/6102.html

相关文章:

  • 公司网站二维码怎么做的关键词筛选工具
  • 网站会员系统模板网络销售推广平台
  • 深圳网站的网络公司北京网络营销公司
  • 做网站的宽度为多少网站域名备案信息查询
  • 格力网站建设首页环球贸易网
  • 什么网站可以做发票验证百度搜索排名怎么做
  • 网站建设要准备些什么成人教育培训机构
  • 网站开发承诺函seo怎么做优化方案
  • 申请个人网站和企业官网有什么不同现在搜什么关键词能搜到网站
  • seo查询工具网站企业网络的组网方案
  • 域名停靠app大全下载网站入口百度一下网页打开
  • 南京做网站设计公司网站制作流程
  • 网站怎么做本地测试如何免费引流推广
  • 百度网站官网入口网址青岛seo推广专员
  • 网站设计深圳公司安年软文网
  • 网站logo一般多大网站关键词怎么设置
  • 朝阳区社会建设办公室网站站长之家网站排名
  • 有哪些做婚礼平面设计的网站问卷调查网站
  • 独立做网站友链交换平台源码
  • 做网站比较专业的公司软文发稿网站
  • 湘西网站建设吧网络销售是什么
  • 教育培训营销型网站建设哪家好b2b自动发布信息软件
  • 做擦边球网站长尾关键词举例
  • 商务网站开发流程宁波seo优化公司排名
  • 电子商务搭建网站今日财经新闻
  • 申论我国政府网站建设和管理的现状内蒙古最新消息
  • 平度推广网站建设有哪些网站可以免费发布广告
  • 青海网站建设哪家强搜易网托管模式的特点
  • 简单电商网站模板下载网站怎样做推广
  • 视频多的网站建设百度关键词搜索热度