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

眉山网站设计桂林餐饮兼职网站建设

眉山网站设计,桂林餐饮兼职网站建设,重庆水务建设项目集团网站,工商局网站怎么做身份确认使用范围 synchronized使用上用于同步方法或者同步代码块在锁实现上是基于对象去实现使用中用于对static修饰的便是class类锁使用中用于对非static修饰的便是当前对象锁 synchronized的优化 在jdk1.6中对synchronized做了相关的优化 锁消除 在synchronized修饰的代码块中…

使用范围

  • synchronized使用上用于同步方法或者同步代码块
  • 在锁实现上是基于对象去实现
  • 使用中用于对static修饰的便是class类锁
  • 使用中用于对非static修饰的便是当前对象锁
    在这里插入图片描述

synchronized的优化

  • 在jdk1.6中对synchronized做了相关的优化

锁消除

  • 在synchronized修饰的代码块中,要是不涉及操作临界资源的情况,即便你写了synchronized修饰,也不会出发锁机制
    在这里插入图片描述

锁膨胀

  • 在一个循环中频繁的出现锁资源的获取与释放操作,会带来资源的消耗,于是便会将锁的范围扩大到循环的外边,避免频繁的竞争和获取锁资源而导致的资源消耗
  public void method(){for (int i = 0; i < Integer.MAX_VALUE; i++) {synchronized ("") {// 业务代码}}}

在这里插入图片描述
在这里插入图片描述

锁升级

  • ReentrantLock中是基于乐观锁的CAS获取线程资源。资源拿不到的情况下才会挂起线程。synchronized在jdk1.6之间完全获取不到锁的情况下立即挂起线程,但是在1.6之后进行了锁的升级与优化。

  • 无锁、匿名偏向:当前对象没有作为锁的存在
  • 偏向锁:当前锁资源,只有一个线程频繁的获取和释放锁,那么只有该线程获取锁是判断是否是同一个线程,如果是线程资源拿走。如果线程不是当前自己的线程,则采用基于CAS的方式,尝试将偏向锁指向当前线程。如果获取不到则触发锁升级为轻量级锁,也就意味着发生了锁竞争的情况。
  • 轻量级锁:使用自旋锁的方式频繁的采用CAS的方式获取锁资源。这里采用的自适应自旋锁(JVM更具上次的自旋结果来进行判断本次的自旋时间长短)。如果成功获取锁资源,资源取走。如果获取锁资源失败,锁升级。
  • 重量级锁:最为传统的synchronized实现方式。拿不到锁资源之间挂起线程,然后进行用户态和内核态的不断切换。。。

synchronized锁的实现原理

  • synchronized锁是基于对象来进行实现的
    在这里插入图片描述
  • 关于MarkWord的内容展开示意图
    在这里插入图片描述
    从图中可以看出通过锁的标志位来进行区分锁的不同状态

synchronized锁升级的过程演示

  • 使用之前需要导入一个依赖
		<dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.9</version></dependency>

在这里插入图片描述

  • 锁在默认情况下,开启了偏向锁的延迟
  • 原因是因为在偏向锁升级为轻量级锁的时候会涉及到偏向锁的撤销,需要等到一个安全点(STW),才能完成对偏向锁的撤销,所以在并发的情况下就可以选择不开启偏向锁,或者设置偏向锁延迟开启
  • 在JVM启动时会大量加载.class文件到内存,该操作会涉及synchronized使用,为了避免出现偏向锁撤销的操作。在启动初期,有一个延迟5s开启偏向锁的操作。
  • 要是正常开启偏向锁,那么就不会出现无锁的状态,而是直接进入匿名偏向锁

在这里插入图片描述

  • 变成了偏向锁

在这里插入图片描述

/*** @author 舒一笑* @date 2023/5/28*/
public class Test15 {public static void main(String[] args) throws InterruptedException {Thread.sleep(5000);Object o = new Object();System.out.println(ClassLayout.parseInstance(o).toPrintable());//thread 线程偏向锁Thread thread = new Thread(()->{synchronized (o){System.out.println("thread线程 :"+ClassLayout.parseInstance(o).toPrintable());}});thread.start();// 轻量级锁 -> 重量级锁synchronized (o){System.out.println("main线程 :"+ClassLayout.parseInstance(o).toPrintable());}}}

在这里插入图片描述

锁转换状态示意图

在这里插入图片描述

LockRecord和ObjectMonitor存储的内容示意图

在这里插入图片描述

http://www.yayakq.cn/news/70937/

相关文章:

  • 沈阳做网站的公司推荐锡林浩特网站建设开发
  • 哈尔滨网站建设托管南京百度seo代理
  • 包头做网站哪家好网络职业有哪些
  • 公司网页网站建设企业免费招聘网站
  • 盗网站后台源码贺州seo
  • 电子商务网站经营性icp儿童编程哪家培训机构好
  • 盘锦化工网站建设模板网站建设制作
  • 公司网站彩页怎么做网站建设一般一年多少费用
  • 网站建设零基础自学视频教程wordpress截取字符串
  • 如何本地搭建网站网站建设宣传方案
  • 洛宁县东宋乡城乡建设局网站网站建设国内外研究进展
  • 南京网站推广营销公司哪家好网站不备案
  • 大宗商品报价平台泉州百度seo公司
  • xwiki做的网站漫画 网站 源码
  • 在哪个网站可以免费做广告工业设计大赛
  • 平湖网站建设流程虚拟主机 安装wordpress
  • 网站的功能与建设方案如何组建一个小型局域网
  • 设计一个网站要多少钱有什么网络项目可以做的
  • 建设网站培训学校怎样才能被百度秒收录
  • 老王传奇新开网站沈阳市城乡建设局
  • 信息化建设 网站建设等方面京东商城网站建设分析
  • 富阳网站开发徐州手机网站建设
  • 网站访问速度跟服务器cpu和内存和带宽哪个重要莲都区建设分局网站
  • 衣服 div网站wordpress统计在线人数
  • 魏县审批建设的网站网站维护中
  • 网站开发交接协议书建立模板
  • 网站首页图网站备案需要材料
  • 加强网站建设的建议dedecms 资源类网站
  • 东莞市品牌网站建设平台滨州区建设局网站
  • 网站建设业务客户来源wordpress 多站点配置