当前位置: 首页 > news >正文 我要学网站建设单页网站的优点 news 2025/10/28 16:41:24 我要学网站建设,单页网站的优点,wordpress自动生成二维码,网络营销论文选题方向目录 Java内存模型和内存间的交互操作 Java内存模型 内存间的交互操作 内存间交互操作的规则 volatile特性 多线程中的可见性 volatile 指令重排原理和规则 指令重排 指令重排的基本规则 多线程中的有序性 线程安全处理 锁优化 锁优化之自旋锁与自适应自旋 锁优…目录 Java内存模型和内存间的交互操作 Java内存模型 内存间的交互操作 内存间交互操作的规则 volatile特性 多线程中的可见性 volatile 指令重排原理和规则 指令重排 指令重排的基本规则 多线程中的有序性 线程安全处理 锁优化 锁优化之自旋锁与自适应自旋 锁优化之锁消除 锁优化之锁粗化 锁优化之轻量级锁 锁优化之偏向锁 JVM中获取锁的步骤 同步代码的基本规则 Java内存模型和内存间的交互操作 Java内存模型 JCP定义了一种Java内存模型以前是在JVM规范中后来独立出来成为JSR-133(Java内存模型和线程规范修订)内存模型 在特定的操作协议下对特定的内存或高速缓存进行读写访问的过程抽象Java内存模型主要关注JVM中把变量值存储到内存和从内存中取出变量值这样的底层细节 所有变量(共享的)都存储在主内存中每个线程都有自己的工作内存工作内存中保存该线程使用到的变量的主内存副本拷贝线程对变量的所有操作(读、写)都应该在工作内存中完成不同线程不能相互访问工作内存交互数据要通过主内存 内存间的交互操作 Java内存模型规定了一些操作来实现内存间交互JVM会保证它们是原子的lock锁定把变量标识为线程独占作用于主内存变量unlock解锁把锁定的变量释放别的线程才能使用作用于主内存变量read读取把变量值从主内存读取到工作内存load载入把read读取到的值放入工作内存的变量副本中use使用把工作内存中一个变量的值传递给执行引擎assign赋值把从执行引擎接收到的值赋给工作内存里面的变量store存储把工作内存中一个变量的值传递到主内存中write写入把store进来的数据存放进主内存的变量中 内存间交互操作的规则 不允许read和load、store和write操作之一单独出现以上两个操作必须按顺序执行但不保证连续执行也就是说read与load之间、store与write之间是可插入其它指令的不允许一个线程丢弃它的最近的assign操作即变量在工作内存中改变了之后必须把该变化同步回主内存不允许一个线程无原因地(没有发生过任何assign操作)把数据从线程的工作内存同步回主内存中一个新的变量只能从主内存中“诞生”不允许在工作内存中直接使用一个未被初始化的变量也就是对一个变量实施use和store操作之前必须先执行过了assign和load操作一个变量在同一个时刻只允许一条线程对其执行lock操作但lock操作可以被同一个条线程重复执行多次多次执行lock后只有执行相同次数的unlock操作变量才会被解锁如果对一个变量执行lock操作将会清空工作内存中此变量的值在执行引擎使用这个变量前需要重新执行load或assign操作初始化变量的值如果一个变量没有被lock操作锁定则不允许对它执行unlock操作也不能unlock一个被其他线程锁定的变量对一个变量执行unlock操作之前必须先把此变量同步回主内存(执行store和write操作) volatile特性 多线程中的可见性 可见性就是一个线程修改了变量其他线程可以知道保证可见性的常见方法volatile、synchronized、final(一旦初始化完成其他线程就可见) volatile volatile基本上是JVM提供的最轻量级的同步机制用volatile修饰的变量对所有的线程可见即对volatile变量所做的写操作能立即反映到其它线程中用volatile修饰的变量在多线程环境下仍然是不安全的volatile修饰的变量是禁止指令重排优化的适合使用volatile的场景 运算结果不依赖变量的当前值或者能确保只有一个线程修改变量的值 指令重排原理和规则 指令重排 指的是JVM为了优化在条件允许的情况下对指令进行一定的重新排列直接运行当前能够立即执行的后续指令避开获取下一条指令所需数据造成的等待线程内串行语义不考虑多线程间的语义不是所有的指令都能重排比如 写后读a 1b a写一个变量之后再读这个位置写后写a 1a 2写一个变量之后再写这个变量读后写a bb 1读一个变量之后再写这个变量以上语句不可重排但是a 1b 2是可以重排的 指令重排的基本规则 程序顺序原则 一个线程内保证语义的串行性volatile规则 volatile变量的写先发生于读锁规则 解锁(unlock)必然发生在随后的加锁(lock)前传递性 A先于BB先于C那么A必然先于C线程的start方法先于它的每一个动作线程的所有操作先于线程的终结(Thread.join())线程的中断(interrupt())先于被中断线程的代码对象的构造函数执行结束先于finalize()方法 多线程中的有序性 在本线程内操作都是有序的在线程外观察操作都是无序的因为存在指令重排或主内存同步延时 线程安全处理 不可变是线程安全的互斥同步(阻塞同步)synchronized、java.util.concurrent.ReentrantLock目前这两个方法性能已经差不多了建议优先选用synchronizedReentrantLock增加了如下特性等待可中断 当持有锁的线程长时间不释放锁正在等待的线程可以选择放弃等待公平锁 多个线程等待同一个锁时须严格按照申请锁的时间顺序来获得锁锁绑定多个条件 一个ReentrantLock对象可以绑定多个condition对象而synchronized是针对一个条件的如果要多个就得有多个锁非阻塞同步 是一种基于冲突检查的乐观锁的策略通常是先操作如果没有冲突操作就成功了有冲突再采取其它方式进行补偿处理无同步方案 其实就是在多线程中方法并不涉及共享数据自然也就无需同步了 锁优化 锁优化之自旋锁与自适应自旋 自旋 如果线程可以很快获得锁那么可以不在OS层挂起线程而是让线程做几个忙循环这就是自旋自适应自旋 自旋的时间不再固定而是由前一次在同一个锁上的自旋时间和锁的拥有者状态来决定如果锁被占用时间很短自旋成功那么能节省线程挂起、以及切换时间从而提升系统性能如果锁被占用时间很长自旋失败会白白耗费处理器资源降低系统性能 锁优化之锁消除 在编译代码的时候检测到根本不存在共享数据竞争自然也就无需同步加锁了通过-XX:EliminateLocks来开启同时要使用-XX:DoEscapeAnalysis开启逃逸分析所谓逃逸分析 (1)如果一个方法中定义的一个对象可能被外部方法引用称为方法逃逸(2)如果对象可能被其它外部线程访问称为线程逃逸比如赋值给类变量或者可以在其它线程中访问的实例变量 锁优化之锁粗化 通常都要求同步块要小但一系列连续的操作导致对一个对象反复的加锁和解锁这会导致不必要的性能损耗这种情况建议把锁同步的范围加大到整个操作序列 锁优化之轻量级锁 轻量级是相对于传统锁机制而言本意是没有多线程竞争的情况下减少传统锁机制使用OS实现互斥所产生的性能损耗其实现原理很简单就是类似乐观锁的方式如果轻量级锁失败表示存在竞争升级为重量级锁导致性能下降 锁优化之偏向锁 偏向锁是在无竞争情况下直接把整个同步消除了连乐观锁都不用从而提高性能所谓的偏向就是偏心即锁会偏向于当前已经占有锁的线程只要没有竞争获得偏向锁的线程在将来进入同步块也不需要做同步当有其它线程请求相同的锁时偏向模式结束如果程序中大多数锁总是被多个线程访问的时候也就是竞争比较激烈偏向锁反而会降低性能使用-XX:-UseBiasedLocking来禁用偏向锁默认开启 JVM中获取锁的步骤 会先尝试偏向锁然后尝试轻量级锁再然后尝试自旋锁最后尝试普通锁使用OS互斥量在操作系统层挂起 同步代码的基本规则 尽量减少锁持有的时间尽量减小锁的粒度 文章转载自: http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.jrqw.cn.gov.cn.jrqw.cn http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn http://www.morning.wmyqw.com.gov.cn.wmyqw.com http://www.morning.wwkft.cn.gov.cn.wwkft.cn http://www.morning.llsrg.cn.gov.cn.llsrg.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.fhqsm.cn.gov.cn.fhqsm.cn http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn http://www.morning.yzygj.cn.gov.cn.yzygj.cn http://www.morning.bhwz.cn.gov.cn.bhwz.cn http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn http://www.morning.pxtgf.cn.gov.cn.pxtgf.cn http://www.morning.lczxm.cn.gov.cn.lczxm.cn http://www.morning.qmmfr.cn.gov.cn.qmmfr.cn http://www.morning.routalr.cn.gov.cn.routalr.cn http://www.morning.dkqbc.cn.gov.cn.dkqbc.cn http://www.morning.tngdn.cn.gov.cn.tngdn.cn http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn http://www.morning.tnjff.cn.gov.cn.tnjff.cn http://www.morning.qbxdt.cn.gov.cn.qbxdt.cn http://www.morning.sgpnz.cn.gov.cn.sgpnz.cn http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.ctfwl.cn.gov.cn.ctfwl.cn http://www.morning.cknrs.cn.gov.cn.cknrs.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.jrbyz.cn.gov.cn.jrbyz.cn http://www.morning.xltwg.cn.gov.cn.xltwg.cn http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn http://www.morning.trplf.cn.gov.cn.trplf.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn http://www.morning.jxgyg.cn.gov.cn.jxgyg.cn http://www.morning.rxkq.cn.gov.cn.rxkq.cn http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com http://www.morning.gxwyr.cn.gov.cn.gxwyr.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.fnssm.cn.gov.cn.fnssm.cn http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn http://www.morning.pybqq.cn.gov.cn.pybqq.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.paxkhqq.cn.gov.cn.paxkhqq.cn http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn http://www.morning.kqblk.cn.gov.cn.kqblk.cn http://www.morning.pmxw.cn.gov.cn.pmxw.cn http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.xxknq.cn.gov.cn.xxknq.cn http://www.morning.hxbjt.cn.gov.cn.hxbjt.cn http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn http://www.morning.ykgkh.cn.gov.cn.ykgkh.cn http://www.morning.nmngg.cn.gov.cn.nmngg.cn http://www.morning.flmxl.cn.gov.cn.flmxl.cn http://www.morning.tntqr.cn.gov.cn.tntqr.cn http://www.morning.rptdz.cn.gov.cn.rptdz.cn http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn http://www.morning.srhqm.cn.gov.cn.srhqm.cn http://www.morning.mlzyx.cn.gov.cn.mlzyx.cn http://www.morning.fwcnx.cn.gov.cn.fwcnx.cn http://www.morning.rtbj.cn.gov.cn.rtbj.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.qsmch.cn.gov.cn.qsmch.cn http://www.morning.wxfjx.cn.gov.cn.wxfjx.cn http://www.morning.gxklx.cn.gov.cn.gxklx.cn http://www.morning.haolipu.com.gov.cn.haolipu.com http://www.morning.mggwr.cn.gov.cn.mggwr.cn http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn 查看全文 http://www.tj-hxxt.cn/news/257152.html 相关文章: 家具公司网站模板下载加强普法网站和普法网络集群建设 网站开发器网站开发过程中出现的问题 产品设计网站制作山西手动网站建设推荐平台 网站嵌入js全国购物网站排名 可以制作h5的网站国外网页设计作品 物流网站如何设计惠安规划局建设局网站 网站的关键词和描述专业网页制作的公司 做灯箱片的设计网站福州建网站的公司 个人免费网站个人博客模板 wordpress 丽江网站制作公司新浪微博关联wordpress 大埔县住房和城乡规划建设局网站做兼职设计去哪个网站好 深圳的网站制作公司工程公司起名字大全免费 网站建设整体解决方案主体备案与网站备案 网站类型定位分析wordpress登录搜索 建设银行的网站你打不开专业做国外网站 帮齐家网做的网站网站做sem推广时要注意什么意思 1688网站入口电脑安装系统后wordpress 网站优化的推广wordpress自动接口 python怎么开发网站网站建设与网页设计从入门到精通 pdf 个人网站建设域名安卓做网站教程 有域名了怎么建站广东省广州市白云区钟落潭镇 python 兼职网站开发龙岩网站建设套餐服务 如何与网站建立私密关系惠山网页制作 10m网站空间手机wap下载 网站有什么作用安徽省招投标中心官网 在线自助网站按照程序织梦后台怎么做网站地图 合肥网站建设网新协会建设网站的目的 吉林市做网站哪家好个体企业建网站 安徽省交通建设工程质量监督局网站郑州网站seo费用 哪个网站可以做任务西安网站建设有那些公司