您好,欢迎来到商国互联!

收藏本站

商国互联

点击查看优质供应商

当前位置:商国互联首页> 产品库 > IT设备、数码产品、软件 > 其他专用软件 > 其他行业专用软件

蓝鸥西安java培训提高锁性能的几点建议 

  • 价 格: 面议 /
  • 供 应 地:陕西省西安市
  • 发布公司:蓝鸥科技有限公司西安分公司
  • 产品型号:
  • 品 牌:
  • 发布日期:2018/7/10 9:46:53
  • 联系人QQ:2962671591 点击这里给我发消息

详细说明

产品说明Explain

公司简介Content


1.减小锁持有的时间

比如100个人去银行办理业务,要填一百张表,但是只有一支笔,那么很显然,每个人用笔的时间越短,效率也就越高

注意:减少锁的持有时间有助于降低锁冲突的可能性,进而提升系统的并发能力2.减小锁的力度concurrentHashMap的实现,他的内部被分为了若干个晓得hashmap,称之为段(SEGMENT),默认是16段

减小锁粒度会引入一个新的问题,当需要获取全局锁的时候,其消耗的资源会较多,不如concurrenthashMap的size()方法.可以看到计算size的时候需要计算全部有效的段的锁

事实上计算size的时候会先使用无锁的方式计算,如果失败会采用这个方法,但是在高并发的场合concurrenthashmap的size依然要差于同步的hashmap.因此在类似于size获取全局信息方法调用不频繁的情况下,这种减小粒度的的方法才是真正意义上的提高系统并发量

注意:所谓减小锁粒度,就是指缩小锁定对象的范围,从而减小锁冲突的可能性,进而提高系统性能3.读写分离来替换独占锁

在读多写少的情况下,使用读写锁可以有效的提高系统性能 ReadWriteLock可以提高系统性能

差异很明显.4.锁分离

已LinkedBlockingQueue为例,take函数和put函数分别实现了冲队列取和往队列加数据,虽然两个方法都对队列进项了修改,但是LinkedBlockingQueue是基于链表的所以一个操作的是头,一个是队列尾端,从理论情况下将并不冲突

如果使用独占锁则take和put就不能完成真正的并发,所以jdk并没有才用这种方式取而代之的是两把不同的锁分离了put和take的操作

5.锁粗化

虚拟机在遇到一连串地对同一锁不断进行请求和释放的操作时,便会把所有的锁操作整合成对锁的一次请求,从而减小对锁的请求同步次数,这个操作叫锁粗话,

注意:性能优化就是根据运行时的真实情况对各个资源点进行权衡折中的过程,锁粗话的思想和减少锁持有时间是相反的,但是在不同的场合,他们的效果并不相同,所以大家要根据实际情况,进行权衡6.java虚拟机对锁优化所做的努力

6.1锁偏向

偏向锁,简单的讲,就是在锁对象的对象头中有个ThreaddId字段,这个字段如果是空的,第一次获取锁的时候,就将自身的ThreadId写入到锁的ThreadId字段内,将锁头内的是否偏向锁的状态位置1.这样下次获取锁的时候,直接检查ThreadId是否和自身线程Id一致,如果一致,则认为当前线程已经获取了锁,因此不需再次获取锁,略过了轻量级锁和重量级锁的加锁阶段。提高了效率。

但是偏向锁也有一个问题,就是当锁有竞争关系的时候,需要解除偏向锁,使锁进入竞争的状态

6.2轻量级锁

轻量级锁加锁:线程在执行同步块之前,JVM会先在当前线程的栈桢中创建用于存储锁记录的空间,并将对象头中的Mark Word复制到锁记录中,官方称为Displaced Mark Word。

然后线程尝试使用CAS将对象头中的Mark Word替换为指向锁记录的指针。如果成功,当前线程获得锁,如果失败,表示其他线程竞争锁,当前线程便尝试使用自旋来获取锁。

轻量级锁解锁:轻量级解锁时,会使用原子的CAS操作来将Displaced Mark Word替换回到对象头,如果成功,则表示没有竞争发生。

如果失败,表示当前锁存在竞争,锁就会膨胀成重量级锁

注:轻量级锁会一直保持,唤醒总是发生在轻量级锁解锁的时候,因为加锁的时候已经成功CAS操作;而CAS失败的线程,会立即锁膨胀,并阻塞等待唤醒。

蓝鸥科技西安中心是一家致力于技术研发、技术咨询、技术服务、职业教育、创业孵化及项目投资的集团化公司。教育部产学合作协同育人项目承办企业,蓝鸥长期精研西安Java培训、西安大数据培训、西安VR/AR/Unity3D游戏开发培训、西安HTML5前端开发培训、西安Web安全攻防和西安UI设计培训等技术,是目前国内仅有的一家集苹果AATC、Unity、Oracle“三大官方授权于一身”的移动互联网培训企业。选择蓝鸥,不止高薪更是高起点!

卖家名片Cards

卖家名片

蓝鸥科技有限公司西安分公司

联系人:蓝鸥西安(市场部)

手机:17791055930

邮箱:yangping@lanou3g.com

地址:陕西省西安市高新区唐兴路10号

电话: 传真:

旺铺

免责声明:交易有风险,请谨慎交易,以免因此造成自身的损失,本站所展示的信息均由企业自行提供,内容的真实性、准确性和合法性由发布企业负责。本站对此不承担任何保证责任。
商国互联供应商 品质首选

蓝鸥科技有限公司西安分公司

  • 联系人:蓝鸥西安(市场部)
  • 联系人QQ:2962671591 点击这里给我发消息
  • 手机: 17791055930
  • 电话:
  • 会员级别:免费会员
  • 认证类型:企业认证
  • 企业证件:已通过企业认证 [已认证]
  • 认证公司:
  • 主营产品:iOS培训 iOS开发工程师 Android培训 H5培训 UI设计 VR/AR
  • 公司所在地:陕西省西安市