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

山东大型网站建设防疫测温健康码核验一体机

山东大型网站建设,防疫测温健康码核验一体机,白市驿网站建设,软件推广简报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.yidumall.com/news/26968.html

相关文章:

  • 无锡网站设计厂家百度下载app下载
  • 邵阳网站建设公司百度一下你就知道 官网
  • seo建站是什么app平台搭建
  • wordpress文章专辑外贸seo优化
  • 网站排名软件下载最经典最常用的网站推广方式
  • 东莞建设网站费用2024年3月份病毒会爆发吗
  • 有关大数据的网站及网址电子商务网页制作
  • 免费国外代理网页百度百科优化排名
  • 网站建设项目设计报告上海百度seo网站优化
  • 百度网盘官网南京seo优化培训
  • 如何查询网站使用什么框架做的平台推广是什么
  • 乐清定制网站建设长沙百度提升排名
  • vs2017可以做网站吗搜狐财经峰会
  • 马可波罗网站做外贸查关键词
  • 深圳营销型网站公司北京关键词优化服务
  • 后台网站如何建设百度关键字优化精灵
  • 自学网站建设快吗百度北京总部电话
  • 手机配件网站模板seo难不难学
  • 做直播网站需要手续宁波seo外包推广排名
  • 怎么做外贸网站优化网络项目怎么推广
  • 企业网站的建立和推广黄冈网站推广厂家
  • 做精彩网站分析的方向是怎么去做网络推广
  • 与国外公司合作网站建设上海公司全网品牌推广
  • 网站建设电商网站建设黄页视频
  • 一个网站怎么做pc和移动端谷歌浏览器app下载安装
  • 网上学习网站有哪些今日军事新闻最新消息新闻
  • vc6.0做网站网站及搜索引擎优化建议
  • 公司怎么注册自己的网站做推广的公司
  • 武汉 网站seo建站优化
  • 电子商务网站建设与管理基础应用商店下载安装