千锋教育-做有情怀、有良心、有品质的IT职业教育机构

Java编程入门学习之锁优化知识解析

时间:2018-03-30 15:17:33  |  来源:千锋教育郑州校区  |  作者:

   所谓“锁优化”是指在并发环境下进行编程时,降低加锁所带来的性能上的损坏。规范加锁的操作、优化锁的使用方法、避免不必要的线程竞争,不仅可以提高程序性能,也能避免不规范加锁可能造成线程死锁问题,提高程序健壮性。今天千锋郑州老师就给大家分享一下Java编程入门学习中有关锁优化的知识。

  常见的锁的类型有偏向锁、自旋锁、轻量级锁和重量级锁四种,不同的锁有不同的适合场景。比如偏向锁适用于只有一个线程访问同步块场景;轻量级锁适合追求响应时间,锁占用时间很短的场景;重量级锁适用于追求吞吐量,锁占用时间较长的场景。

锁优化.jpg

  在编码过程中可以采取的锁优化思路主要有五种:

  1、减少锁持有时间。对一个方法加锁,不如对方法中需要同步的几行代码加锁;

  2、减小锁粒度。比如ConcurrentHashMap采取对segment加锁而不是整个map加锁,提高并发性;

  3、锁分离。根据同步操作的性质,把锁划分为的读锁和写锁,读锁之间不互斥,提高了并发性。

  4、锁粗化。在一个间隔性地需要执行同步语句的线程中,如果在不连续的同步块间频繁加锁解锁是很耗性能的,因此把加锁范围扩大,把这些不连续的同步语句进行一次性加锁解锁。虽然线程持有锁的时间增加了,但是总体来说是优化了的。

  5、锁消除。锁消除是编译器做的事:根据代码逃逸技术,如果判断到一段代码中,堆上的数据不会逃逸出当前线程(即不会影响线程空间外的数据),那么可以认为这段代码是线程安全的,不必要加锁。

  千锋郑州java培训前瞻企业需求,在JavaEE基础上,融合大数据大并发的相关培训课程,选择机会多的互联网行业进行项目实训,一方面了需要掌握技能点,另一方面节省了学员的学习时间,这套课程还会在学科中根据行业市场需求,进行不断升级,以满足市场上越来越高的要求,培养出高质量的工程师人才。

新开班

  • ▪ JavaEE培训班 06.11 抢座
  • ▪ Python培训班 05.28 抢座
  • ▪ HTML5培训班 05.14 抢座
  • ▪ JavaEE培训班 04.16 抢座
  • ▪ Python培训班 04.16 抢座
  • ▪ UI交互设计培训 05.02 抢座
  • ▪ HTML5培训班 04.09 抢座
  • ▪ Python培训班 03.26 开班
  • ▪ HTML5培训班 03.12 爆满
  • ▪ JavaEE培训班 03.26 开班
  • 郑州地址:郑州市二七区航海中路60号海为科技园C区10层、12层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员
  • 成都旅游校区:成都市一环路西二段17号四川旅游青羊校区内
    成都华立校区:成都一环路西二段17号华立大厦3楼
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、UI课程培训
  • 千锋教育微信号
    扫描加好友