java锁机制

Java34

公平锁和非公平锁

公平锁就是按照先来先服务、非公平就是不管你什么时候来,唤醒的时候都是随即唤醒。例如synchronize就是非公平锁,ReentrantLock既可以作为公平锁,也可以作为非公平锁。

可重入锁

可重入锁就是说某个线程已经获取到某个锁,这个线程跨域在次获取到这个锁而不会出现死锁。synchronize和ReentrantLock都是可重入锁。需要注意的是ReentrantLock锁需要手动释放锁、并且加锁次数要和释放次数一致。

好处:相同的线程可以访问这个对象,而不需要等待锁在我可以访问它之前被释放,从而降低了代码复杂性

[En]

Benefits: the same thread accesses this object without waiting for a lock to be released before I can access it, reducing code complexity

独享锁和共享锁

独享锁是指该锁一次只能被一个线程持有。共享锁指该锁可以由多个线程持有。synchronized和ReentrantLock都是独享锁。但是对于Lock的另一个实现类 ReadWriteLock,其读锁是共享锁,其写锁是独享锁。

读锁可以保证并发读操作非常高效。独享锁与共享锁也是通过AQS来实现的。

独占锁:

独占锁是只有头节点获取锁,其余节点的线程继续等待,等待锁被释放后,才会唤醒下一个节点的线程。独占锁的同步状态state值在0和1之间切换,保证同一时间只能有一个线程是处于活动的,其他线程都被阻塞。 共享锁:

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

MongoDB 简介

Failure will never overtake me if my determination to succeed is strong enough. 只要我成功的决心足够强,失败就永远不会打...
Java

常见的开源 License

目录 什么是开源软件 什么是 license 商业许可证与开源许可证 对开发者的影响 开源许可证的类型 如何选择开源许可证 什么是开源软件 开源软件。假设有一天,我觉得代码的能力很好,我写了一个小工具...
Java

迭代器Iterator

迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会让整个集合体系过于臃...
Java

Hexo 必装插件

可以优化博客路径,默认路径 https://xcmaster.com/2022/07/07/hexo必装插件,还...
Java

Maven-私服搭建与配置

一、maven私服搭建 1.下载地址 https://help.sonatype.com/repomanager3/product-information/download/download-arch...
Java

匿名内部类的使用

原始做法: ```java /* * 创建时间: 2022/4/30 * * @author 尼古拉斯.Cai灯 / public class BasicClass { public static v...
Java

我觉得 MQ 无用的理由

不喜欢用 MQ。 如果是同一个系统内的不同模块,可以用数据库表,来传递消息; 如果是不同系统间数据接口,可以用 webservice(同步,现在好像是 gRPC 有点热)、SFTP/FTP协议(异步)...
Java

从零玩转第三方登录之QQ登录

从零玩转第三方登录之QQ登录 前言 在实际连接之前,让我们谈谈后台方案设计。由于它连接到第三方登录,因此保存用户信息是不可避免的。首先需要明确用户成功登录第三方后,[En]Before the act...
Java

【一知半解】synchronied

synchronized是什么 synchronized是java同步锁,同一时刻多个线程对同一资源进行修改时,能够保证同一时刻只有一个线程获取到资源并对其进行修改,因此保证了线程安全性。 synch...
Java

feignclient各种使用技巧说明

常规的FeignClient的创建与使用我相信只要使用过spring cloud全家桶的套件的基本上都是非常熟悉了,我们只需定义一个interface,然后定义相关的远程接口方法签名及在方法上标记相关...
Java

Mybatis框架入门

首先,先说一下写这个入门程序的需求与开发步骤: 那前三步就不说了有一些基础就可以办到 写入配置文件时,主要写入两种类型的配置文件。第一种类型是主配置文件,它管理与接口对应的其他配置文件。[En]Whe...