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

朝阳网站建设手机网站开发 1433端口错误

朝阳网站建设,手机网站开发 1433端口错误,一级造价工程师合格标准,南京城乡建设网站Synchronized 和后来出的这个lock锁的区别 在并发编程中#xff0c;多个线程访问同一个共享资源时#xff0c;我们必须考虑如何维护数据的原子性。在 JDK1.5 之前#xff0c;Java 是依靠 Synchronized 关键字实现锁功能来做到这点的。Synchronized 是 JVM 实现的一种内置锁… Synchronized 和后来出的这个lock锁的区别 在并发编程中多个线程访问同一个共享资源时我们必须考虑如何维护数据的原子性。在 JDK1.5 之前Java 是依靠 Synchronized 关键字实现锁功能来做到这点的。Synchronized 是 JVM 实现的一种内置锁锁的获取和释放是由 JVM 隐式实现。 到了 JDK1.5 版本并发包中新增了 Lock 接口来实现锁功能它提供了与 Synchronized 关键字类似的同步功能只是在使用时需要显示获取和释放锁 Lock 同步锁是基于 Java 实现的而 Synchronized 是基于底层操作系统的 Mutex Lock 实现的每次获取和释放锁操作都会带来用户态和内核态的切换从而增加系统性能开销 因此在锁竞争激烈的情况下Synchronized 同步锁在性能上就表现得非常糟糕它也常 被大家称为重量级锁。 1.6以后呢对这个Synchronized 锁进行了升级引入了锁升级某些程度上来说呢。再某些业务场景已经超过了lock。 这里再次生明Synchronized 是关键字而lock是通过是西安这个lock接口来实现这个所功能的。 Synchronized 底层原理 也就是他的同步原理 通常 Synchronized 实现同步锁的方式有两种一种是修饰方法一种是修饰方法块。以 下就是通过 Synchronized 实现的两种同步方法加锁的方式 javac -encoding UTF-8 SyncTest.java // 先运行编译 class 文件命令 javap -v SyncTest.class // 再通过 javap 打印出字节文件 通过以上命令去反编译出这个文件的字节码文件可以看到 你会发现Synchronized 在修饰同步代码块时是由 monitorenter和 monitorexit 指令来实现同步的。进入 monitorenter 指令后线程将持有 Monitor 对象退出 monitorenter 指令后线程将释放该 Monitor 对象。注意修饰的代码块 而同步方法的字节码中你会发现当 Synchronized 修饰同步方法时并没有发 现 monitorenter 和 monitorexit 指令而是出现了一个 ACC_SYNCHRONIZED 标志。 这是因为 JVM 使用了 ACC_SYNCHRONIZED 访问标志来区分一个方法是否是同步方法 当方法调用时调用指令将会检查该方法是否被设置 ACC_SYNCHRONIZED 访问标志。 如果设置了该标志执行线程将先持有 Monitor 对象然后再执行方法。在该方法运行期 间其它线程将无法获取到该 Mointor 对象当方法执行完成后再释放该 Monitor 对 象。 再来看看 Synchronized 修饰方法是怎么实现锁原理的。 JVM 中的同步是基于进入和退出管程Monitor对象实现的。每个对象实例都会有一个 MonitorMonitor 可以和对象一起创建、销毁。 当多个线程同时访问一段同步代码时多个线程会先被存放在 EntryList 集合中处于 block 状态的线程都会被加入到该列表。接下来当线程获取到对象的 Monitor 时 Monitor 是依靠底层操作系统的 Mutex Lock 来实现互斥的线程申请 Mutex 成功则持 有该 Mutex其它线程将无法获取到该 Mutex。 注意阅读下图 如果线程调用 wait() 方法就会释放当前持有的 Mutex并且该线程会进入 WaitSet 集合 中等待下一次被唤醒。如果当前线程顺利执行完方法也将释放 Mutex。 这里插播一下 wait和sleep都释放锁码好像写代码的时候遇到过 因 Monitor 是依赖于底层的操作系统实现存在用户态与内核态之间的切换所以增加了性能开销。 锁升级优化 为了提升性能JDK1.6 引入了偏向锁、轻量级锁、重量级锁概念来减少锁竞争带来的上 下文切换而正是新增的 Java 对象头实现了锁升级功能。 当 Java 对象被 Synchronized 关键字修饰成为同步锁后围绕这个锁的一系列升级操作都 将和 Java 对象头有关。 Java 对象头 在 JDK1.6 JVM 中对象实例在堆内存中被分为了三个部分对象头、实例数据和对齐填 充。其中 Java 对象头由 Mark Word、指向类的指针以及数组长度三部分组成 Mark Word 记录了对象和锁有关的信息。Mark Word 在 64 位 JVM 中的长度是 64bit 锁升级功能主要依赖于 Mark Word 中的锁标志位和释放偏向锁标志位Synchronized 同 步锁就是从偏向锁开始的随着竞争越来越激烈偏向锁升级到轻量级锁最终升级到重量 级锁。 1. 偏向锁 偏向锁主要用来优化同一线程多次申请同一个锁的竞争。在某些情况下大部分时间是同一 个线程竞争锁资源例如在创建一个线程并在线程中执行循环监听的场景下或单线程操 作一个线程安全集合时同一线程每次都需要获取和释放锁每次操作都会发生用户态与内 核态的切换。 再自己的同步代码块里加锁同步代码块有全局变量我们枷锁让它不被别的线程修改 偏向锁的作用就是当一个线程再次访问这个同步代码或方法时该线程只需去对象头的 Mark Word 中去判断一下是否有偏向锁指向它的 ID无需再进入 Monitor 去竞争对象 了。 当对象被当做同步锁并有一个线程抢到了锁时锁标志位还是 01“是否偏向锁”标 志位设置为 1并且记录抢到锁的线程 ID表示进入偏向锁状态。 一旦出现其它线程竞争锁资源时偏向锁就会被撤销。偏向锁的撤销需要等待全局安全点 暂停持有该锁的线程同时检查该线程是否还在执行该方法如果是则升级锁反之则被 其它线程抢占。 下图中红线流程部分为偏向锁获取和撤销流程 偏向锁这个设计到一个调优 高并发 在高并发场景下当大量线程同时竞争同一个锁资源时偏向锁就会被撤销发生 stop the world 后 开启偏向锁无疑会带来更大的性能开销这时我们可以通过添加 JVM 参数关闭偏向锁来调优系统性能 如果你确定应用程序里所有的锁通常情况下处于竞争状态可以通过JVM参数关闭偏向锁-XX:- UseBiasedLockingfalse那么程序默认会进入轻量级锁状态。 2.轻量级锁 1轻量级锁加锁 线程在执行同步块之前JVM会先在当前线程的栈桢中创建用于存储锁记录的空间并 将对象头中的Mark Word复制到锁记录中官方称为Displaced Mark Word。然后线程尝试使用 CAS将对象头中的Mark Word替换为指向锁记录的指针。如果成功当前线程获得锁如果失 败表示其他线程竞争锁当前线程便尝试使用自旋来获取锁。 2轻量级锁解锁 轻量级解锁时会使用原子的CAS操作将Displaced Mark Word替换回到对象头如果成 功则表示没有竞争发生。如果失败表示当前锁存在竞争锁就会膨胀成重量级锁。图2-2是 两个线程同时争夺锁导致锁膨胀的流程图。 因为自旋会消耗CPU为了避免无用的自旋比如获得锁的线程被阻塞住了一旦锁升级 成重量级锁就不会再恢复到轻量级锁状态。当锁处于这个状态下其他线程试图获取锁时 都会被阻塞住当持有锁的线程释放锁之后会唤醒这些线程被唤醒的线程就会进行新一轮 的夺锁之争。 这里非常重要的一点就是 当一个线程访问同步块并获取锁时会在对象头和栈帧中的锁记录里存储锁偏向的线程ID
http://www.yutouwan.com/news/142301/

相关文章:

  • 织梦软件怎么使用域名做网站监控视频怎么做直播网站
  • 企业网站建设需要多少钱成都国家高新技术企业管理办法
  • 网站建设企业实践总结专业网站制作案例
  • 微网站开发建设wordpress缓存
  • 深圳网站建设公司哪家苏州企业网站制作服务
  • 无锡做网站优化多少钱在线设计logo图标
  • 电商网站开发数据库表帝国建站模板
  • 临沂网站优化哪家好服务器如何发布网站
  • 建站公司技术服务费iis7重启 网站
  • 建筑培训网站有哪些环保公司网站模板
  • 公司网站的建设哪家好wordpress 最新区块编辑
  • 河北住房和城乡建设厅网站首seo托管服务
  • 哪个网站可以做线上翻译赚钱银行网站建设方案
  • 北京高端网站建设飞沐wordpress 关闭保存修订版本
  • 淮安建设局网站大学软件开发需要学什么
  • 公司想为一个产品做多个网站本地建站discuz
  • 萤石云网站开发建设网站需要什么技术
  • 网站建设新闻+常识网站基础三要素
  • 汉川网站开发怎样开发一款软件
  • 明珠信息港网站建设专家wordpress中文下载方法
  • 平凉市建设局门户网站江门关键词优化效果
  • ping一下新浪网站怎么做网站的服务器每年都要续费的吗
  • 河北网站建设电话炫丽的网站
  • 网站开发项目描述万网网站后台管理系统
  • 杭州网站建设公司平台小白如何学电商运营
  • 互联网大厂有哪些池州网站优化公司
  • 海外网站cdn加速七夕表白网站制作
  • 网站打开是别人的wordpress建设下载网站
  • 做农业需关注什么网站wordpress网页播放器插件
  • 青岛商业网站建设友情链接