400-650-7353

精品课程

java线程锁有哪几种区别 java线程锁有哪几种

发布: Java培训 发布时间:2021-09-02 14:34:59

推荐答案
品牌型号:联想 YOGA 14c/系统版本:windows10

Java线程锁主要有8大类:公平锁/非公平锁、可重入锁、独享锁/共享锁、互斥锁/读写锁、乐观锁/悲观锁、分段锁、偏向锁/轻量级锁/重量级锁、自旋锁。区别为:

公平锁是指多个线程按照申请锁的顺序来获取锁。

非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。

可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。

独享锁是指该锁一次只能被一个线程所持有。

共享锁是指该锁可被多个线程所持有。

互斥锁在Java中的具体实现就是ReentrantLock。

读写锁在Java中的具体实现就是ReadWriteLock。

悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改。因此对于同一个数据的并发操作,悲观锁采取加锁的形式。悲观的认为,不加锁的并发操作一定会出问题。

乐观锁则认为对于同一个数据的并发操作,是不会发生修改的。在更新数据的时候,会采用尝试更新,不断重新的方式更新数据。乐观的认为,不加锁的并发操作是没有事情的。

分段锁其实是一种锁的设计,并不是具体的一种锁,对于ConcurrentHashMap而言,其并发的实现就是通过分段锁的形式来实现高效的并发操作。

偏向锁是指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁。降低获取锁的代价。

轻量级锁是指当锁是偏向锁的时候,被另一个线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,提高性能。

重量级锁是指当锁为轻量级锁的时候,另一个线程虽然是自旋,但自旋不会一直持续下去,当自旋一定次数的时候,还没有获取到锁,就会进入阻塞,该锁膨胀为重量级锁。重量级锁会让其他申请的线程进入阻塞,性能降低。
 

其它答案
冰阔落2020-06-22 18:56:36

Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

中公旗下IT培训品牌

  • 中公教育品牌

     中公教育是一家中国领先的全品类职业教育机构,提供超过100个品类的综合职业就业培训服务。公司在全国超过1000个直营网点展开经营,深度覆盖300多个地级市,并正在快速向数千个县城和高校扩张。

  • 完善就业体系

    通过阶段性授课机制,和每阶段的定期考核,先让学员能够学会所学内容,才能找打合适工作。最后一个阶段为就业课程,从技术和面试两个方面加深就业能力,并且还有不定期的双选会供大家选择。

  • 全程面授+实战技术

    线下课程全程是师资面对面教学,不会存在上课只对着大屏幕上课的情况,有问题都可以在课上得到解答。并且优就业通过自主研发大纲和学习路线,并且定期更新课程所学技术,让大家所学技术不落伍。

中公优就业专业职业规划老师

为您详细答疑解惑,更能领取免费课程

相关问题

更多课程

专业课程老师将第一时间为您解答

立即答疑
修改
优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,领80G学习资料