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

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

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


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

Java高并发背后的锁机制

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

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

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

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

JUC包下的工具锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值