一个懵懵懂懂的大三学子对Java锁机制的探索历程

阅读: 评论:0

一个懵懵懂懂的大三学子对Java锁机制的探索历程

一个懵懵懂懂的大三学子对Java锁机制的探索历程

放弃该放弃的是无奈,放弃不该放弃的是无能,不放弃该放弃的是无知,不放弃不该放弃的是执着。

愿自己能在自己所热爱的道路上越走越远。


和往常一样,每周五在CSDN上写自己的总结的时候都会随便看看CSDN上, 本周无意中看到了GEEK+博主大赛, 怀着尝试的心情,在这里展开自己对Java锁机制的探索. 如果有觉的不符合的,那么希望评委能指出来以供自己对自己理解的偏见的纠正.

Java高并发背后的锁机制

本文着重以JDK6版本之后的锁机制来进行阐述自己对锁机制的理解.

Java锁机制目前分为两种, 一种是通过Java关键字synchronized实现的稍微重量级的锁, 还有一种就是JDK提供的在urrent 包下各种锁工具类.
一、 synchronized关键字
在这里就对关键字synchronized的使用方法就不做过多的介绍了, Java教科书上对该关键字的使用还是有的. 现在就着重说下自己对synchronized的理解.

对Java多线程、高并发有了解的都应该知道,Java在JDK6对该synchronized关键字进行了很大部分的优化, 使的该关键字使用的时候并没有像以前那么重量级. 而Java开发团队在对synchronized优化的过程被称之为锁膨胀过程或者是锁的升级过程,还能说是锁的几种状态.那么基于我们应该先对锁的几种状态有一定的了解:

  1. 偏向锁:
    在我们写的大部分并发程序中,锁不仅不存在多线程的竞争,而且总是由同一个线程获取到该锁,如果对这一个线程实施对总线加锁或者对缓存加锁将会导致性能大幅度的下降, 所以在这种情况下Java引用了偏向锁, 而偏向锁就是将那个锁对象的对象头的MarkWord使用CAS交换技术换成当前持有该锁的线程的线程ID,并且将偏向锁的标志状态设置为1,表示当前对象锁的状态为偏向锁, 以后只要有新的线程(也可能还是当前线程)尝试获取同一把对象锁的时候,

JUC包下的工具锁

本文发布于:2024-02-03 01:04:53,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170689349447646.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:学子   历程   机制   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23