java中有几种锁

发布时间:2020-06-25 15:32:38

来源:亿速云

阅读:86

作者:Leah

今天就跟大家聊聊有关java中有几种锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。

Java中的锁主要有以下几种:

1、同步锁

同一时刻,一个同步锁只能被一个线程访问。以对象为依据,通过synchronized关键字来进行同步,实现对竞争资源的互斥访问。

2、独占锁(可重入的互斥锁)

互斥,即在同一时间点,只能被一个线程持有;可重入,即可以被单个线程多次获取。什么意思呢?根据锁的获取机制,它分为“公平锁”和“非公平锁”。Java中通过ReentrantLock实现独占锁,默认为非公平锁。

3、公平锁

是按照通过CLH等待线程按照先来先得的规则,线程依次排队,公平的获取锁,是独占锁的一种。Java中,ReetrantLock中有一个Sync类型的成员变量sync,它的实例为FairSync类型的时候,ReetrantLock为公平锁。设置sync为FairSync类型,只需——Lock lock = new ReetrantLock(true)。

4、非公平锁

是当线程要获取锁时,它会无视CLH等待队列而直接获取锁。ReetrantLock默认为非公平锁,或——Lock lock = new ReetrantLock(false)。

5、共享锁

能被多个线程同时获取、共享的锁。即多个线程都可以获取该锁,对该锁对象进行处理。典型的就是读锁——ReentrantReadWriteLock.ReadLock。即多个线程都可以读它,而且不影响其他线程对它的读,但是大家都不能修改它。CyclicBarrier, CountDownLatch和Semaphore也都是共享锁。

6、读写锁

维护了一对相关的锁,“读取锁”用于只读操作,它是“共享锁”,能同时被多个线程获取。“写入锁”用于写入操作,它是“独占锁”,只能被一个线程锁获取。

Java中,读写锁为ReadWriteLock 接口定义,其实现类是ReentrantReadWriteLock,包括内部类ReadLock和WriteLock。方法readLock()、writeLock()分别返回度操作的锁和写操作的锁。

看完上述内容,你们对java中的几种锁有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

java几种锁_java中有几种锁相关推荐

  1. java的入口函数_java中有几种入口函数

    java中有几种入口函数 发布时间:2020-06-26 15:48:42 来源:亿速云 阅读:135 作者:Leah java中有几种入口函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面 ...

  2. java B锁_Java中15种锁的介绍

    原标题:Java中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 1.公平锁 / 非公平锁 2.可重入锁 / 不可重入锁 3.独享 ...

  3. java if 赋值语句_Java中有一种特殊的赋值运算叫做三元运算,它和if-else语句类似....

    Java中有一种特殊的赋值运算叫做三元运算,它和if-else语句类似. 答:√ 顺序阀在液压系统中起___作用 答:压力开关 断电后,机器人关节轴发生了位移,不需要更新转速计数器 答:× " ...

  4. java 权限修饰符_java中4种访问权限修饰符

    在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性. 一.public (1) 定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到. ...

  5. java random产生随机数_java的三种随机数生成方式,必掌握

    随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 第二种:Math.random() 第三种:currentTimeMi ...

  6. java源代码实例倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  7. java 共享锁 独占锁_java中的公平锁、非公平锁、可重入锁、递归锁、自旋锁、独占锁和共享锁...

    一.公平锁与非公平锁 1.1 概述 公平锁:是指多个线程按照申请锁的顺序来获取锁. 非公平锁:是指在多线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取到锁,在高并发的情 ...

  8. java中乐观锁_java中的乐观锁的研究总结

    前段时间有人问我java中的乐观锁和悲观锁的问题,我被问愣神了,乐观锁和悲观锁我到是听说过,在数据库里面应用极广,但是java里面就好像没有听说过,后来我详细去看了下<java编程思想>, ...

  9. java 几种类_Java 中有几种类型的流?

    字节流和字符流.字节流继承于 InputStream.OutputStream,字符流继承于Reader.Writer. 在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便. 关于 ...

  10. java基本数据类型_Java 中有几种基本数据类型是什么?

    认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词: 1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&qu ...

最新文章

  1. 关于大流量的网站是如何解决访问量
  2. constructor
  3. MIMO雷达比幅单脉冲测角精度分析(系统工程与电子技术)
  4. 美国大学生数学建模竞赛赛题特点
  5. Java虚拟机详解----常用JVM配置参数
  6. 《Python Cookbook 3rd》笔记(4.16):迭代器代替 while 无限循环
  7. 将数据传回前端_惠普打印机被发现偷偷回传数据:隐藏极深
  8. 计算机系统-小数(浮点数)在内存中的存储
  9. C#笔记13 匿名类型、集合初始化器、扩展方法和查询表达式
  10. 宠物领养平台的分析与实现
  11. 物联网小课堂之NB-IoT无线通信中的发射功率和接收灵敏度
  12. 使用mybatisplus进行分页查询total总为0的原因
  13. 电脑重装系统后被格式化了怎么恢复之前的数据?
  14. 如何在1到100的整数数组中找到缺失的数字
  15. 【Java百炼成神】双生武魂——HashMap、LinkedHashMap、Hashtable
  16. Linux---Docker镜像使用cx_Oracle连接Oracle数据库
  17. 用 Python 给女友做了个可能会被打死的七夕礼物 !
  18. fitbit手表中文说明书_最佳Fitbit:哪一个适合您?
  19. Redis:(error) MOVED 原因和解决方案
  20. PsTools - Windows远程操作工具

热门文章

  1. 互联网公司裁员潮传言四起,是捕风捉影还是确有其事?
  2. 小米手机Root的过程及解决Unable to get view server version from device问题
  3. 普通话和英语发音_incomplete
  4. 从杭州崩溃小伙说起:我们被灌输的价值观,真的对吗?
  5. PHP中单引号与双引号用法
  6. android11屏蔽导航栏
  7. 大专计算机专业学期计划,大专三年学习目标计划
  8. 大专学计算机为什么不好,大专学计算机后悔了是怎么回事 大专计算机专业学校推荐...
  9. 字节跳动前端实习面试经历分享
  10. C语言读取wav文件中特定内容6,c读取wav文件,头文件后面的所有数据