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

临沂谁会做网站c#做交易网站

临沂谁会做网站,c#做交易网站,商城插件wordpress,免费开挂的软件可见性#xff1a; 什么是可见性#xff1a; 可见性是指在数据在收到一个线程的修改时#xff0c;其他的线程也可以得知并获取修改后的值的属性。这是并发编程的三大特性之一。 为了提高cpu的利用率#xff0c;cpu在获取数据时#xff0c;不是直接在主内存读取数据 什么是可见性 可见性是指在数据在收到一个线程的修改时其他的线程也可以得知并获取修改后的值的属性。这是并发编程的三大特性之一。 为了提高cpu的利用率cpu在获取数据时不是直接在主内存读取数据而是在告诉缓存里面但是在多核CPU下每个CPU的高速缓存是独立的也就造成了如果CPU修改自己高速缓存的内容但是数据没有同步给主内存或这是其他缓存就造成了数据的不一致。 cpu的高速缓存 CPU为了提高速率会首先在高速缓存里面查找数据如果高速缓存里面没有数据再去主内存里面查找数据。 从缓存1到缓存3存储的内容主键变大但是查询速度变小。 图解可见性问题 在初始阶段我们的i0 ,但是CPU1将数据改为1如果没有可见性主内存和其他的告诉缓存并不会知道数据改变这样的话计算的结构就会出现错误。 代码演示可见性问题 //演示可见性问题就是在修改了一个值之后我们的另一个现成的数据并没有改变。 如果没有可见性的问题那么只要是修改一个值的话这个之就会被所有的使用者感知到他的变化不会出现程序中的状况 如何解决可见性问题 1.volatile 当变量被volatile修饰之后这个变量的读写都会变得很特别对于可见性来说被他修饰的变量的改变可以被任意的使用这个变量的线程感知。 volatile的读操作在读取被volatile修饰的变量是CPU会直接在主内存模块去读取在高速缓存中的变量的值会被标记为不可用所以每个CPU读取的值都是相同的。 volatile的写操作对于volatile修饰的变量的写操作他会将缓存中的修改的共享变量的值及时的刷新到主内存。 添加了volatile的变量再转为汇编语言时会追加一个指令这个指令就是规定了使用volatile的变量在写入时是直接写入主内存并且这个临界变量在缓存中的值都不在有效需要在主内存中重新读取。 2.synchronized 在程序添加synchronized关键字之后会将CPU高速缓存中将带有synchronized关键字的代码块和方法里面的变量移除。重新在主内存中加载。在释放所之后将这个变量直接同步到主内存。 在这里小编要提醒一下变量移除时值得所有CPU缓存的变量都会被移除。 3.ReentranLock 我们在讲解这个之前不如去看一下ReentranLock的源码在源码里面我们发现他其实时使用了volatile关键字。 4.final 在只是进行读取的数据里面是不会发生可见性到问题的也就是说如果变量被修饰的话因为是不可变的也就是不会发生可见性问题。 提示在java里面volitile是不能与共同修饰一个变量的。 有序性 CPU在执行指令时为了让指令可以快速地执行会进行指令重排但是指令重排之后的代码会出现有序性的问题。 有序性定义 大家都知道我们的java是乱序执行的。但是在多线程的时候乱序执行就会造成数据的问题。下面小编用代码演示一下 代码演示有序性 private static int a,b,x,y;public static void main(String[] args) throws InterruptedException {for (int i 0; i Integer.MAX_VALUE; i) {a 0;b 0;x 0;y 0; ​Thread t1 new Thread(() - {a 1;x b;});Thread t2 new Thread(() - {b 1;y a;}); ​t1.start();t2.start();t1.join();t2.join(); ​if (x 0 y 0) {System.out.println(第 i 次x x ,y y);}}} 在这段代码中可能会出现输出每个都是零的时候证明了java会指令重排。 解决有序性问题 have before 具体规则 单线程happen-before原则在同一个线程中书写在前面的操作happen-before后面的操作。 锁的happen-before原则同一个锁的unlock操作happen-before此锁的lock操作。 volatile的happen-before原则 对一个volatile变量的写操作happen-before对此变量的任意操作。 happen-before的传递性原则 如果A操作 happen-before B操作B操作happen-before C操作那么A操作happen-before C操作。 线程启动的happen-before原则同一个线程的start方法happen-before此线程的其它方法。 线程中断的happen-before原则对线程interrupt方法的调用happen-before被中断线程的检测到中断发送的代码。 线程终结的happen-before原则线程中的所有操作都happen-before线程的终止检测。 对象创建的happen-before原则一个对象的初始化完成先于他的finalize方法调用。 volatile volatile可以解决可见性和有序性问题他是通过内存屏障的方式来解决指令重拍的问题。在两个指令之间加上一个指令避免进行指令的重新排序。
http://www.hkea.cn/news/14440675/

相关文章:

  • 湖北省建设厅七大员报名网站建网站先要申请网址吗
  • python做流量网站导航网站开发用户文档
  • 建设com网站网站建设捌金手指花总五
  • 网站开发公司怎么找客户html基本标签
  • 建设银行 网站江西网站建设企业
  • 哪些网站的做的好看的企业网站建设的步骤
  • 如何给网站加引导页企业网站系统官网
  • 知名网站制作全包公司网页打不开
  • 佛山微信网站推广多少钱手机设计房子的软件3d下载
  • 番禺网站建设企业网站制作与发布
  • vs 2008 手机网站开发租车公司网站模板
  • 复兴区建设局网站效果好企业营销型网站建设公司
  • 用自己的电脑做服务器弄网站私人网站免费观看
  • 专门做活动的网站杨幂做的网站广告
  • 微信推广赚钱上海关键词优化外包
  • 页面设计英文翻译百度seo查询
  • 网站运营培训wordpress自适应导航模板
  • 蓝色 宽屏 网站 模板下载快速开发平台 免费开源
  • DW做的网站都能打开吗网站换名称域名
  • 臭臭猫网站建设wordpress301重定向
  • wordpress资讯站模板王野天女明星
  • 黄石企业网站建设wordpress小型论坛插件
  • wordpress 视频站主题注册有限公司的流程和条件
  • 怎样做企业手机网站海外贸易平台有哪些
  • 做新浪网网站所需的条件聊城建设银行官方网站
  • 威宁做网站省级精品课程网站建设
  • sns社交网站有哪些线上p2p网站建设
  • 中山网站设计素材淘客网站模版
  • 网站地址跟网页地址区别营销网站开发公司
  • 中小学学校网站建设网站后台数据应该怎么做