加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

java的乐观锁和气馁锁是怎样实现的

发布时间:2021-05-23 04:50:24 所属栏目:编程 来源:互联网
导读:java的锁有这么几类。 乐观锁和气馁锁 乐观锁就是JVM以为不通过加锁也能担保并发的正确性。典范实现是诸如AtomicInteger的实现。 气馁锁就是必要加锁互斥。典范

java的锁有这么几类。

乐观锁和气馁锁

乐观锁就是JVM以为不通过加锁也能担保并发的正确性。典范实现是诸如AtomicInteger的实现。

气馁锁就是必要加锁互斥。典范实现是Synchronized(Synchronized属于乐观锁照旧气馁锁着实跟详细实现有关,大部门场景下都是气馁锁)和ReentrantLock。

可重入和不行重入

可重入是指当一个线程获取了锁,可是没有开释,这个线程又要获取这个锁,如故能获取乐成。Synchronized和ReentrantLock都是可重入锁。

不行重入是可重入的否命题,这样本身会把本身死锁。应该没有这样的实现。

公正锁和非公正锁

公正锁是先哀求锁的线程必定先得到锁,也就是FIFO。公正说是不是就是公道的?也许也不必然,由于这会造成上下文的切换。ReentrantLock默认长短公正锁,可是可以通过结构要领结构公正锁实例。

非公正锁是新来的线程有优先得到锁的机遇,也就是可以插队。公道吗?也许也不公道,由于这也许造成“饿死”征象:在列队的旧的线程老是获取不到锁。Sysnchronized着实就长短公正锁。

排他锁和共享锁

排他锁是一个线程得到锁之后,其他线程不能再得到锁。大大都场景下都是排他锁。

共享锁是指多个线程可以同时得到锁。常见的是多个线程可以同时得到读锁。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读