这期内容当中小编将会给大家带来有关Java中锁类型的介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、雅安服务器托管、营销软件、网站建设、临安网站维护、网站推广。
1、自旋锁
自旋锁顾名思义,它会等待一定时间(自旋),在这期中会什么都不做就是等资源被释放,好处在于没有了内核态用户态切换的效率损失,但是如果它一直不能访问到资源的话就会一直占用cpu资源,所以它会循环一段时间后进入阻塞状态。
2、重量级锁
synchronized就是重量级锁的实现机制,抢不到资源的进程会进入阻塞状态。
3、偏向锁
顾名思义,它会偏向第一个访问资源的进程,如果说只有一个进程执行同步代码块,那么就会上个偏向锁,如果有其他线程抢占资源,那么就会升级为轻量级锁。
4、轻量级锁
偏向锁升级之后就是轻量级锁,锁只可以升级而不可以降级。轻量级锁中的其他进程会进入自选状态,如果说自选失败,就会升级会重量级锁。
5、公平、非公正锁
主要是指线程是否先来后到拿到锁,synchronized是非公平的,而ReentrantLock默认非公平,可以设置为公平锁。
6、悲观锁
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。
传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
7、乐观锁
总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制(数据库中)和CAS算法实现。
上述就是小编为大家分享的Java中锁类型的介绍了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
新闻名称:Java中锁类型的介绍
文章源于:https://www.cdcxhl.com/article14/gppide.html
成都网站建设公司_创新互联,为您提供微信小程序、用户体验、网站制作、商城网站、外贸建站、网站设计
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联