Java常见的锁问题汇总(持续更新中)

  1. Java常见的锁问题汇总
    1. Java中一共有哪些锁
    2. 前提
      1. 公平锁/非公平锁

Java常见的锁问题汇总

说到锁,这个话题就比较长了。在最开始程序是单线程执行的时候,此时根本用不到锁。因为锁的目的是为了防止程序的并发执行。后来,在Java中出现了多线程、线程池的概念,为了保证临界资源的正常访问,我们推出了锁的概念,用的最多的就是synchronizeLock。但是随着互联网的兴起,和请求业务量的增加,此时往往一台Server已经很难满足我们的业务需求,因此出现了分布式的概念,而上面说的两种锁,仅仅在单Server上生效,无法保证在分布式的系统中的数据一致性,因此,我们又提出了分布式锁

接下来,我们讲解下,每种锁的应用和不同。

Java中一共有哪些锁

  1. 公平锁/非公平锁
  2. 可重入锁
  3. 独享锁/共享锁
  4. 互斥锁/读写锁
  5. 乐观锁/悲观锁
  6. 分段锁
  7. 偏向锁/轻量级锁/重量级锁
  8. 自旋锁

注意,这里面提到的这么多锁的名字,并不代表在JDK中都是一一对应存在的。这些都是按照锁的特性,来进行划分的。

前提

在讲解这些锁之前,我们先说一下synchronizeReentrantLock

公平锁/非公平锁

对于JDK自身提供的锁内容,synchronize关键字只能是非公平锁。而ReentrantLock既可以是公平锁、也可以是非公平锁。


转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至 gouqiangshen@126.com

文章标题:Java常见的锁问题汇总(持续更新中)

文章字数:388

本文作者:BiggerShen

发布时间:2019-11-05, 18:01:36

最后更新:2024-01-16, 03:51:15

原始链接:https://shengouqiang.cn/JavaLock/JavaLockDay01/

版权声明: 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏