分布式锁

本文阐述了分布式锁的概念,其在多线程和多进程并发控制中的必要性,特别是在分布式系统中的作用。通过对比线程锁和进程锁,解释了分布式锁如何解决跨JVM的并发问题,并介绍了使用Redis实现分布式锁的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是分布式锁
  线程锁主要用来给方法,代码加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行改方法或改代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,进程锁是为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。分布式锁:当多个进程不在同一个系统中,用分布式控制多个进程对资源的访问。
2.分布式锁使用场景
  线程间并发问题和进程间并发问题都是可以通过分布式锁解决的,但是强烈不建议这样做,因为采用分布式锁解决这些小问题是非常消耗资源的,分布式锁该用来解决分布式情况下的多线程并发问题。
例如:线程a和线程b都共享某个变量x。如果是单机情况下(单jvm),线程之间共享内存,只要使用线程锁就可以解决并发问题,如果是分布式情况下(多jvm),线程a和线程b很可能不是在同一jvm中,这样线程锁就无法起到作用了,这时候就要用到分布式锁来解决。
3.分布式锁的实现(Redis)
  分布式锁实现的关键是在分布式的应用服务器外,搭建一个存储服务器,存储锁信息,这时候我们可以搭建一个Redis服务器,用Redis服务器来存储分布式锁信息。
注意:锁信息必须是会过期超时的,不能让一个线程长期占有一个锁而导致死锁;而且同一时刻只能有一个线程获取到锁。

注:转发自某个人(不记得了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值