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

制作网站模板的发展空间wordpress 头像打岔

制作网站模板的发展空间,wordpress 头像打岔,智能设计软件有哪些,新网登录网站后台谈到多线程就不得不谈到Synchronized#xff0c;很多同学只会使用#xff0c;缺不是很明白整个Synchronized的底层实现原理#xff0c;这也是面试经常被问到的环节,比如#xff1a; synchronized的底层实现原理 synchronized锁与JVM的实现 synchronized锁升级顺序 sync… 谈到多线程就不得不谈到Synchronized很多同学只会使用缺不是很明白整个Synchronized的底层实现原理这也是面试经常被问到的环节,比如 synchronized的底层实现原理 synchronized锁与JVM的实现 synchronized锁升级顺序 synchronized锁的优劣势与应用场景 今天主要分享以上内容详解synchronized的底层实现多线程相关的可以参考 Java多线程系列教程线程的五大状态以及线程之间的通信与协作  Java多线程系列教程Java线程池的使用方式核心运行原理、以及注意事项 最全Java锁详解独享锁/共享锁公平锁/非公平锁乐观锁/悲观锁  Java多线程系列教程4种常用Java线程锁的特点性能比较、使用场景 史上最强多线程面试44题和答案线程锁线程池线程同步等 Synchronized synchronized 翻译为中文的意思是同步也称之为”同步锁“。 synchronized的作用是保证在同一时刻 被修饰的代码块或方法只会有一个线程执行以达到保证并发安全的效果。 Synchronized的使用 1.synchronized的3种使用方式 修饰实例方法作用于当前实例加锁 修饰静态方法作用于当前类对象加锁 修饰代码块指定加锁对象对给定对象加锁 2.synchronized的代码范例 Synchronized的底层实现 synchronized的底层实现是完全依赖与JVM虚拟机的。 所以谈synchronized的底层实现就不得不谈数据在JVM内存的存储Java对象头以及Monitor对象监视器。 1.Java对象头 在JVM虚拟机中对象在内存中的存储布局可以分为三个区域: 对象头Header 实例数据Instance Data 对齐填充Padding Java对象头主要包括两部分数据 类型指针Klass Pointer是对象指向它的类元数据的指针虚拟机通过这个指针来确定这个对象是哪个类的实例; 标记字段Mark Word用于存储对象自身的运行时数据如哈希码HashCode、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等,它是实现轻量级锁和偏向锁的关键. 2.Java锁对象存储位置 所以很明显synchronized使用的锁对象是存储在Java对象头里的标记字段里。 3.Monitor synchronized的对象锁其指针指向的是一个monitor对象由C实现的起始地址。每个对象实例都会有一个 monitor。 Monitor描述为对象监视器,可以类比为一个特殊的房间这个房间中有一些被保护的数据Monitor保证每次只能有一个线程能进入这个房间进行访问被保护的数据进入房间即为持有Monitor退出房间即为释放Monitor。 使用syncrhoized加锁的同步代码块在字节码引擎中执行时主要就是通过锁对象的monitor的取用与释放来实现的。 4.线程状态流转在Monitor上体现 描述为对象监视器当多个线程同时请求某个对象监视器时对象监视器会设置几种状态用来区分请求的线程 Contention List所有请求锁的线程将被首先放置到该竞争队列 Entry ListContention List中那些有资格成为候选人的线程被移到Entry List Wait Set那些调用wait方法被阻塞的线程被放置到Wait Set OnDeck任何时刻最多只能有一个线程正在竞争锁该线程称为OnDeck Owner获得锁的线程称为Owner !Owner释放锁的线程 下图反映了个状态转换关系 Synchronized 锁的升级顺序 锁解决了数据的安全性但是同样带来了性能的下降。hotspot 虚拟机的作者经过调查发现大部分情况下加锁的代码不仅仅不存在多线程竞争而且总是由同一个线程多次获得。所以基于这样一个概率。 synchronized 在JDK1.6 之后做了一些优化为了减少获得锁和释放锁来的性能开销引入了偏向锁、轻量级锁、自旋锁、重量级锁锁的状态根据竞争激烈的程度从低到高不断升级。 1.偏向锁 偏向锁是JDK6中引入的一项锁优化大多数情况下锁不仅不存在多线程竞争而且总是由同一线程多次获得为了让线程获得锁的代价更低而引入了偏向锁。 偏向锁会偏向于第一个获得它的线程如果在接下来的执行过程中该锁没有被其他的线程获取则持有偏向锁的线程将永远不需要同步。 2.轻量级锁 如果明显存在其它线程申请锁那么偏向锁将很快升级为轻量级锁。 3.自旋锁 自旋锁原理非常简单如果持有锁的线程能在很短时间内释放锁资源那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态它们只需要等一等自旋等持有锁的线程释放锁后即可立即获取锁这样就避免用户线程和内核的切换的消耗。 4.重量级锁 指的是原始的Synchronized的实现重量级锁的特点其他线程试图获取锁时都会被阻塞只有持有锁的线程释放锁之后才会唤醒这些线程。 偏向锁、轻量级锁、重量级锁优劣势比较 你可能也喜欢: Java多线程系列(九)CountDownLatch、Semaphore等4大并发工具类详解Java多线程系列(四)4种常用Java线程锁的特点性能比较、使用场景Java多线程系列(一)最全面的Java多线程学习概述Java多线程系列十源码剖析AQS的实现原理 Java多线程系列(七)并发容器的原理7大并发容器详解、及使用场景Java多线程系列(八)ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
http://www.zqtcl.cn/news/691011/

相关文章:

  • wordpress托管建站网站页面布局和样式设计
  • 建站平台江苏省建设监理协会网站
  • 安徽网站开发培训价格百度seo排名公司
  • 青海网站建设费用oa系统和erp系统区别
  • 个人做网站的注意事项网站开发工程师6
  • 镇江百度网站建设北京网站开发价格
  • 大岭山镇仿做网站推广计划表格
  • 网站备案地址不是我的地址怎么办建设银行网站查询业务收费吗
  • 电商网站设计内容网站编辑及seo招聘
  • 用什么网站开发浙江省住房和建设厅网站
  • 站长工具seo优化建议微信小程序线上商城怎么申请
  • 建筑网站开发设计做网站的公司msgg
  • 设计师个人网站模板网站的尾页要怎么做
  • 营销型网站建设风格设定包括哪些方面wordpress企业魔板
  • 怎样做淘客网站做绿色产品的网站
  • 关于网站建设的通知wordpress点注册后一直不出来
  • 科技公司网站设计方案开发公司绩效考核
  • 深圳网站建设推进旗县政务网站建设工作方案
  • 南宁 网站建设网站集约建设
  • 做网站编辑好吗吉林省四平市
  • 石家庄网站制作最新军事新闻最新消息视频
  • 高端品牌网站设计企业网站建设wordpress文章前阅读
  • 广州做网站星珀各电商网站的特点
  • 西安模板做网站广州微信网站建设平台
  • 网站开发硬件工程师待遇微信商城有哪些第三方平台
  • 基于响应式设计的网站建设软件开发项目甘特图
  • 绍兴兴住房和城乡建设局网站网站更换名称需要重新备案吗
  • 跨境电商网站开发文档网站建设费可摊几年
  • 怎样建设一个游戏网站随便玩玩在线制作网站
  • 免费的成品网站用织梦模板做网站