首页 > 编程语言 >【多线程】JAVA中的锁

【多线程】JAVA中的锁

时间:2024-01-07 09:22:23浏览次数:27  
标签:JAVA 读写 线程 访问共享 共享 多线程 资源

锁作用

java中的锁是用来控制多个线程访问共享资源的方式。一般来说一个锁能够防止多个线程同时访问共享资源(读写锁,读锁是共享锁允许多个线程读共享资源)。

锁的分类

  • 乐观锁:在访问资源时,认为竞争不总是存在,所以在访问共享资源时不加锁,而是在更新数据时判断共享资源是否被其他线程修改(根据版本号/时间戳),如果没有则修改成功;否则进行重试或报错。
  • 悲观锁:在访问资源时,任务竞争总是存在,所以在访问共享资源时进行加锁。
  • 共享锁:访问共享资源时,共享锁可以被多个线程共同持有。
  • 排它锁:访问共享资源时,锁只能被一个线程所持有。

锁的实现

  • 乐观锁:java中乐观锁利用CAS(毕竟并替换)思想来实现。
    • AtomicInteger
    • AtomicLong
  • 悲观锁:
    • synchronized
    • Lock
  • 共享锁:
    • ReentrantReadWriteLock:读写锁中的读锁就是典型的共享锁
  • 排它锁:
    • ReentrantReadWriteLock:读写锁中的写锁就是典型的排它锁
    • synchronized
    • ReentrantLock

标签:JAVA,读写,线程,访问共享,共享,多线程,资源
From: https://www.cnblogs.com/cmxb/p/17950113

相关文章

  • 【Java 并发】线程同步
    目录线程同步条件对象synchronized关键字监视器volatile线程同步条件对象通常线程进入临界区,却发现需要满足某一个条件后,才能继续执行,这时,就需要使用一个条件对象,来管理那些已经获得了一个锁,但是,却不做有用工作的线程。这些条件对象经常被称为条件变量(ConditionalVariable)。......
  • Java之转换流的详细解析
     2.转换流2.1字符编码和字符集字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码......
  • Java线程同步机制
    第1章:引言大家好,我是小黑。今天咱们来聊聊并发编程,咱们经常听说并行、并发这些词,特别是在处理大量数据、高用户负载时,这些概念就显得尤为重要了。为什么呢?因为并发编程可以帮助咱们的应用程序更有效地使用计算资源,处理更多任务,提升性能。为什么要同步线程呢?想象一下,如果有多个......
  • Java并发集合详解
    第1章:引言大家好,我是小黑,在这篇博客中,咱们将一起深入探索Java中的并发集合。多线程编程是一个不可或缺的部分,它能让程序运行得更快,处理更多的任务。但同时,多线程也带来了一些挑战,尤其是在数据共享和同步方面。为了解决这些挑战,Java提供了一系列的并发集合,这些集合为处理并发数据......
  • 设计模式Java实战,彻底学会
    这是全网最强的Java设计模式实战教程。此教程用实际项目场景,结合SpringBoot,让你真正掌握设计模式。网址是:Java设计模式实战专栏介绍-自学精灵(也可以百度搜索“自学精灵”)。本设计模式专栏的威力用Java实战来介绍常用的设计模式,让你真正掌握设计模式。用项目实际场景进行设计模式......
  • JAVA - stream流汇总,求和,分组等
    求和(Sum)示例代码如下所示:List<Integer>numbers=Arrays.asList(1,2,3,4,5);intsum=numbers.stream().mapToInt(Integer::valueOf).sum();1.System.out.println("数字列表的和为:"+sum);2.分组(Grouping)示例代码如下所示:List<String>fruits=Arrays.asList(&qu......
  • Java智慧工地可视化APP信息管理平台源码
    智慧工地信息化解决方案、智慧工地信息管理平台智慧工地系统以推进施工过程管理信息化、数字化、智慧化为手段,促进第五代通信技术(5G)、大数据、智能设备、人工智能等与建筑工程管理进一步融合。智慧化工地建设全面加速,以数字技术助力建筑工地转型升级、提速增效、提档升级的成......
  • 基于Java的学习交流论坛
    选题目的、意义网络信息技术的发展速度之快,在各个方面上影响着人们生活和工作的方式,并且深深的改造了人与人之间交流的方式、学习的方式乃至日常思维方式。伴随着网络信息技术、多媒体技术、数据库技术以及虚拟现实技术在各个区域中的运用都不断的发生改革,基于web的论坛的沟通交流......
  • 基于Java的学生信息管理系统
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功......
  • 多线程(互斥锁,条件变量,虚假唤醒)知识点总结
    互斥锁mutexC++11一共提出四种互斥锁std::mutex:独占的互斥锁,不能递归使用std::timed_mutex:带超时的独占互斥锁,不能递归使用std::recursive_mutex:递归互斥锁,不带超时功能std::recursive_timed_mutex:带超时的递归互斥锁1.mutexmutex有三个成员函数:voidlock();booltry_loc......