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

河北网站建设seo优化wordpress一键变灰色

河北网站建设seo优化,wordpress一键变灰色,软件工程师怎么学,百度开发者搜索Java并发编程中的三大特性分别是原子性、可见性和有序性#xff0c;它们分别靠以下机制实现#xff1a; 原子性#xff1a;原子性指的是对于一个操作#xff0c;要么全部执行#xff0c;要么全部不执行。Java提供了一些原子性操作#xff0c;例如AtomicInteger等#xf…Java并发编程中的三大特性分别是原子性、可见性和有序性它们分别靠以下机制实现 原子性原子性指的是对于一个操作要么全部执行要么全部不执行。Java提供了一些原子性操作例如AtomicInteger等它们使用了底层的CASCompare and Swap操作来保证操作的原子性。CAS操作是一种乐观锁技术当期望值和实际值相同时才会进行更新操作否则会进行重试。 可见性可见性指的是当一个线程对共享变量进行修改后其他线程能够立即看到这个值的改变。Java中可以使用volatile关键字来保证变量的可见性。volatile关键字可以保证该变量对于所有线程的可见性即当一个线程修改了该变量的值后其他线程能够立即看到这个值的改变。同时在JMM规范中对于volatile变量的读取操作和写入操作会在读操作之前插入Load with Barrier屏障保证该操作之前的所有写操作都已经完成同时在写操作之后插入Store with Barrier屏障保证该操作之后的所有读操作都能看到修改后的值。这样可以保证对于volatile变量的访问操作具有原子性、有序性和可见性。 有序性有序性指的是对于一个线程内的操作它们的执行顺序是按照代码顺序执行的。在Java中可以使用synchronized关键字和Lock对象等同步机制来保证线程内的有序性。这些同步机制会保证同步代码块内的代码按照代码顺序执行从而保证了有序性。 总的来说Java并发编程中的三大特性分别是原子性、可见性和有序性。原子性可以通过原子性操作和CAS操作来保证可见性可以通过volatile关键字来保证有序性可以通过同步机制synchronized关键字和Lock对象来保证。 Volitile关键字 在Java中使用volatile关键字声明的变量具有特殊的属性。volatile关键字可以保证该变量对于所有线程的可见性即当一个线程修改了该变量的值后其他线程能够立即看到这个值的改变。volatile关键字可以解决多线程访问共享变量时出现的线程安全问题。 在JMM规范中对于volatile变量的读取操作和写入操作会在读操作之前插入Load with Barrier屏障保证该操作之前的所有写操作都已经完成同时在写操作之后插入Store with Barrier屏障保证该操作之后的所有读操作都能看到修改后的值。这样可以保证对于volatile变量的访问操作具有原子性、有序性和可见性。 使用volatile关键字修饰的变量在修改值时不会被本地线程缓存而是直接操作主内存中的变量因此能够保证变量的可见性。同时由于volatile关键字可以保证变量的可见性因此也可以保证使用该变量的操作是原子性的。 需要注意的是volatile关键字只能保证对单个变量操作的原子性和可见性并不能保证一系列操作的原子性例如i操作。如果需要保证多个操作的原子性可以使用synchronized关键字或者Lock对象等同步机制。 总之volatile关键字是Java中用于解决多线程访问共享变量时出现的线程安全问题的一种手段可以保证变量的可见性和操作的原子性。 volatile关键字可以保证变量对于所有线程的可见性并且禁止指令重排序。为了实现这些特性JMM在编译器和处理器的操作之间插入了特定类型的内存屏障分别是 Load with Barrier屏障LoadLoad屏障这个屏障用于保证volatile读操作之前的所有读操作和写操作都已经完成。 Store with Barrier屏障StoreStore屏障这个屏障用于保证volatile写操作之后的所有写操作都已经完成。 Store with Load屏障StoreLoad屏障这个屏障用于保证volatile写操作之后对于volatile变量的读操作能够读取到修改后的最新值。 这些内存屏障都是通过编译器和处理器来实现的编译器会在生成字节码时插入相关的指令处理器在执行指令时会根据相关的屏障来保证指令的执行顺序和可见性。通过这些屏障JMM保证了volatile变量的可见性、有序性和原子性。 Synchronize关键字 synchronized是Java中一种用于实现线程同步的关键字其底层实现主要涉及到对象头、Monitor监视器和锁升级三个方面。 对象头在Java对象头中有一块用于存储锁信息的部分包括锁标记、偏向线程ID、偏向时间戳等信息。synchronized关键字就是利用了Java对象头中的锁标记来实现线程同步的。 MonitorMonitor是一种同步机制用于实现线程的互斥和协作。在Java虚拟机中每个对象都会与一个Monitor相关联。当一个线程进入synchronized代码块时会尝试获取该对象的Monitor如果该Monitor已经被其他线程占用那么该线程就会被阻塞。 锁升级Java中的锁有多种状态包括无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态。synchronized关键字使用的是重量级锁但是在竞争不激烈的情况下可以使用偏向锁或轻量级锁来优化性能。偏向锁是指在没有竞争的情况下将锁标记设置为偏向线程的ID使得该线程可以不需要每次都去竞争锁提高了程序的运行效率。轻量级锁是指在竞争不激烈的情况下使用CAS操作来实现锁的获取和释放避免了线程的上下文切换也提高了程序的运行效率。但是如果竞争激烈轻量级锁就会升级为重量级锁这样就会带来较大的性能损失。 总的来说synchronized关键字的底层实现主要涉及到对象头、Monitor和锁升级三个方面。在Java虚拟机中每个对象都会与一个Monitor相关联当一个线程进入synchronized代码块时会尝试获取该对象的Monitor。synchronized关键字使用的是重量级锁但是在竞争不激烈的情况下可以使用偏向锁或轻量级锁来优化性能。
http://www.ho-use.cn/article/10823775.html

相关文章:

  • 中安消防安全网站建设阿里云备案 网站服务内容
  • 单色系网站设计有哪些大连建设网水电煤气费查询网
  • 网站开发多长时间wordpress卢松松模板
  • 如何给网站添加统计代码北京优秀网站建设
  • 网站被做镜像什么意思logo设计的最好的公司
  • 最好网站建设青岛网站设计建议i青岛博采网络
  • 贵阳网站建设企业软文推广教程
  • 响应式网站导航栏重庆网站制作外包
  • 中山建设网站官网互联网广告行业分析
  • 俄罗斯外贸常用网站北仑营销型网站制作
  • 外贸网站建设ppt模板下载请上传网站应用水印图片
  • 什么程序做网站收录好女装店网站源码
  • 百度公司给做网站吗做网站怎么找公司
  • 大连百度网站排名优化住房和城乡建设厅证书查询网
  • 怎么给QQ名片做网站苏州市工业园区规划建设局网站
  • 河北省省住房和城乡建设厅网站网站建设合同 完整版
  • 十大小说网站排名如何做外围网站的代理
  • 营销型网站是啥新站整站排名优化火速公司
  • 网站界面设计案例沧州网站建设哪家专业
  • 地理位置地图网站建设手工制作房子硬纸板
  • 广东seo网站设计中国诚乡建设部网站
  • 网站备案查询 whois做网站建设哪家好
  • 临沧网站制作长春网长春关键词排名站设计
  • 做网站的税率建设银行 杭州招聘网站
  • 潍坊网站开发asp企业网站设计
  • 网站建设 科目wordpress邮件美化
  • 免费网站登录口看完你会感谢我学校网站怎么做的好
  • wordpress网站加速网站开发获客渠道
  • 专业的河南网站建设公司排名科技创新论文800字
  • 西安网站手机网站建设中文手机app开发软件