我是靠谱客的博主 体贴泥猴桃,最近开发中收集的这篇文章主要介绍普通锁和分布式锁,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、普通锁和分布式锁

    为什么有了普通锁还需要分布式锁,当然是因为普通锁和分布式锁各有各的使用场景。普通针对多线程的场景,一般可以synchronized和lock。而分布式针对的是分布式的环境,系统部署在多个机器中,也会出现并发问题,并且场景是多个进程之间的并发问题。使用内存标记无法解决这个问题,因为内存是线程共享的。

2、普通锁

 主要有两种synchronized和lock。下面介绍一下两个锁的异同点:

      1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;

  2)synchronized除了在流程走完释放锁,还在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock 时需要在finally块中释放锁;

  3)Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;当通过lockInterruptibly()方法获取某个锁时,如果不能获取到,只有进行等待的情况下,是可以响应中断的。

  4)通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。

  5)Lock可以提高多个线程进行读操作的效率。ReadWriteLock可是实现并发读。

   

最后

以上就是体贴泥猴桃为你收集整理的普通锁和分布式锁的全部内容,希望文章能够帮你解决普通锁和分布式锁所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部