温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中锁类型的介绍

发布时间:2020-06-28 13:24:58 来源:亿速云 阅读:118 作者:Leah 栏目:编程语言

这期内容当中小编将会给大家带来有关Java中锁类型的介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1、自旋锁

自旋锁顾名思义,它会等待一定时间(自旋),在这期中会什么都不做就是等资源被释放,好处在于没有了内核态用户态切换的效率损失,但是如果它一直不能访问到资源的话就会一直占用cpu资源,所以它会循环一段时间后进入阻塞状态。

2、重量级锁

synchronized就是重量级锁的实现机制,抢不到资源的进程会进入阻塞状态。

3、偏向锁

顾名思义,它会偏向第一个访问资源的进程,如果说只有一个进程执行同步代码块,那么就会上个偏向锁,如果有其他线程抢占资源,那么就会升级为轻量级锁。

4、轻量级锁

偏向锁升级之后就是轻量级锁,锁只可以升级而不可以降级。轻量级锁中的其他进程会进入自选状态,如果说自选失败,就会升级会重量级锁。

5、公平、非公正锁

主要是指线程是否先来后到拿到锁,synchronized是非公平的,而ReentrantLock默认非公平,可以设置为公平锁。

6、悲观锁

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。

传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。

7、乐观锁

总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制(数据库中)和CAS算法实现。

上述就是小编为大家分享的Java中锁类型的介绍了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI