前言

在分布式项目中,如果采用本地锁synchronized,只能锁住当前服务器的资源,对于其它服务器的资源无效,如果有100万个周时访问同一接口的数据,还是会有相当一部份会去读取数据库,造成数据库的压力,而redission提供了一个相当完美的锁机制,解决了分布式项目的缓存问题。
流程图:

安装

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.14.1</version></dependency>

配置

@Configuration
public class MyRedissionConfig {@Bean(destroyMethod = "shutdown")public RedissonClient redisson() throws IOException {Config config = new Config();//config.useClusterServers().addNodeAddress("127.0.0.1:6379");config.useSingleServer().setAddress("redis://192.168.16.149:6379");return Redisson.create(config);}
}

使用

在分布式项目中,当其中一个服务器接口中途断了,rlock会自动解锁,然后加上锁

@ResponseBody@GetMapping("/hello")public String hello(){//获得锁RLock rlock = redissonClient.getLock("rlock");//加锁rlock.lock();try {System.out.println("加锁成功了..........................");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}}finally {System.out.println("解锁:" + Thread.currentThread().getId());//解锁rlock.unlock();}return "hello";}

Redission 最常用的可重入锁(Reentrant Lock)相关推荐

  1. Java 可重入锁ReenTrant

    synchronized内置锁的可重入性: 线程同步synchronized中内置的"锁"机制是可重入锁,即一个线程取得某对象的锁,释放后其他线程还可以使用此锁,即可以重复使用. ...

  2. java 变量锁_并发编程高频面试题:可重入锁+线程池+内存模型等(含答案)

    对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一.因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统.内存.CPU.编程语言等多方面的基础能力,更为考验一个程序 ...

  3. Redisson的使用与可重入锁

    目录 一.Redisson的使用 1.Redisson 2.导入依赖 3.建立Redssion配置类 4.使用 二.redisson的可重入锁 1.基本原理 2.test 3.图示 一.Redisso ...

  4. 可重入锁和不可重入锁

    转自https://www.cnblogs.com/dj3839/p/6580765.html 锁的简单应用 用lock来保证原子性(this.count++这段代码称为临界区) 什么是原子性,就是不 ...

  5. 可重入锁(递归锁) 互斥锁属性设置

    前言: 上一次刷博客的时候,看到了自旋锁,通过学习Linux内核,对自旋锁有了一定的了解.在学习的过程中看到这么一句话--自旋锁是不可递归的.自旋锁不可递归,难道有可以递归的锁?带着这个问题,我们来看 ...

  6. 【Java 并发编程】多线程、线程同步、死锁、线程间通信(生产者消费者模型)、可重入锁、线程池

    并发编程(Concurrent Programming) 进程(Process).线程(Thread).线程的串行 多线程 多线程的原理 多线程的优缺点 Java并发编程 默认线程 开启新线程 `Ru ...

  7. 1、Lock接口以及ReentrantLock可重入锁

    1.序 文章目录 1.序 2.Lock 接口 3.AbstractQueuedSynchronizer 3.1 双端队列 3.2 state变量 4.ReentrantLock简介以及其非公平锁模式 ...

  8. 深入Lock锁底层原理实现,手写一个可重入锁

    synchronized与lock lock是一个接口,而synchronized是在JVM层面实现的.synchronized释放锁有两种方式: 获取锁的线程执行完同步代码,释放锁 . 线程执行发生 ...

  9. JUC-9.“锁”事(显式锁与隐式锁/悲观锁与乐观锁/公平锁与非公平锁/可重入锁/读写锁(独占/共享/降级)/邮戳锁/死锁)、锁升级

    目录 一.悲观锁与乐观锁 1.1 悲观锁 1.2 乐观锁 二.公平锁与非公平锁 2.1 为什么会有公平锁/非公平锁的设计为什么默认非公平? 2.2 如何选择使用哪种锁? 三.可重入锁(又名递归锁) 3 ...

最新文章

  1. java 32位授权码_Java实现OAuth2.0授权码方式
  2. 程序员过关斩将--少年派登录安全的奇幻遐想
  3. [css] CSS content属性特殊字符有哪些?
  4. 网页中JS函数自动执行常用三种方法
  5. sql查询月天数之和,函数相加
  6. python中ndarray对象实例化_Python —— 实例化ndarray对象
  7. Entity Framework - 利用T4 分离 Entity 和 DbContext
  8. TextInput组件练习 - QQLogin界面
  9. 【转】对硬盘进行分区时,GPT和MBR区别。
  10. 陆丰市福山妈祖:四大天王
  11. linux的input命令,Linux(Ubuntu)下如何修改鼠标速度——”xinput”命令使用方法
  12. 挑选国外vps主机需要注意哪些呢
  13. 【毕业设计】基于单片机的便携式空气质量检测仪 - 物联网 嵌入式
  14. Java开发 - Redis初体验
  15. uni-app: IPv4地址代替localhost当做项目接口请求地址,不同工作环境需要配置不同请求地址
  16. winscp 登录 am4379 的 linux系统 连接被意外关闭
  17. MSP430单片机工程配置driverlib库
  18. [深度学习] - 网络模型训练过程的 loss 变化分析 (loss / val_loss / test_loss)
  19. 【学习笔记】人工智能导论
  20. java获取当前月和周的第一天和最后一天

热门文章

  1. ubuntu安装以及启动nginx
  2. PHP预防重复http协议,PHP HTTP协议:防盗链
  3. C语言 itoa函数简单实现
  4. 太好玩了!用Python做音乐节奏可视化!
  5. 音视频框架-webrtc中的网络反馈与控制
  6. 一、何为算法,什么是伪代码
  7. (四)Scala中apply的应用
  8. 大二学生HTML期末大作业——HTML+CSS+JavaScript食品网上超市购物商城网页与制作
  9. Accelerated Failure Time Models加速失效时间模型AFT
  10. 建立智能客户端应用的开发路标