Java——》Synchronized和Lock区别

news/2024/5/17 16:17:27 标签: java, synchronized, lock, ReentrantLock, AQS, jvm,
lock" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> lockquote>

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

lockquote>

Java——》Synchronized和Lock区别

lockquote>

相同:
都是加方式同步
都是阻塞式的同步

lockquote>
不同SynchronizedLock
的类型Synchronized是Java中的关键字,只能用于同步代码块或方法Lock是一个接口,Java提供了多种实现该接口的,如ReentrantLock、ReadWriteLock等。
使用方式Synchronized是隐式,它的获取和释放由JVM自动管理,无需手动控制Lock是显式,需要手动调用lock()方法获取,并在合适的地方调用unlock()方法释放
实现方式基于ObjectMonitor实现基于AQS实现
可中断性不可中断(如果线程无法获取到,Synchronized会一直等待,直到获取到可以中断(在等待获取的过程中,可以中断线程的等待)
公平性不保证线程获取的公平性(即无法保证等待时间最长的线程优先获取可以通过构造函数指定的公平性(即保证等待时间最长的线程会优先获取。)
条件变量Synchronized没有直接提供类似于Condition的功能,需要借助于Object的wait()、notify()和notifyAll()方法来实现Lock提供了Condition接口,可以通过该接口实现线程之间的等待/通知机制

http://www.niftyadmin.cn/n/5013615.html

相关文章

使用CUDA计算GPU的理论显存带宽

文章目录 一、显存带宽和理论显存带宽1. 显存带宽2. 理论显存带宽1)计算公式2)举例 二、利用CUDA计算理论显存带宽 一、显存带宽和理论显存带宽 1. 显存带宽 显存带宽是指显存和GPU计算单元之间的数据传输速率。 显存带宽越大,意味着数据传…

Qt应用程序连接达梦数据库-飞腾PC麒麟V10

目录 前言1 安装ODBC1.1 下载unixODBC源码1.2 编译安装1.4 测试 2 编译QODBC2.1 修改 qsqldriverbase.pri 文件2.2 修改 odbc.pro 文件2.3 编译并安装QODBC 3 Qt应用程序连接达梦数据库测试4 优化ODBC配置,方便程序部署4.1 修改pro文件,增加DESTDIR 变量…

【Docker】Linux下Docker 部署一个SpringBoot项目的完整流程(通俗易懂,简单上手!!)

目录 首先在Linux系统下安装 Docker 和 Docker Compose 1、安装Docker 2、将当前用户添加到 Docker 用户组 3、安装 Docker Compose 4、验证安装 部署SpringBoot项目 1、安装 Docker 和 Docker Compose 2、编写 Dockerfile 3、构建 Docker 镜像 4、启动容器 5、查看容…

自适应t分布变异的黏菌优化算法,MATLAB代码

本期为大家带来的是:自适应t分布变异的黏菌优化算法。分别在CEC2005,CEC2017,CEC2021和CEC2022上进行测试,自适应t分布变异的黏菌优化算法(DTSMA)均有非常不错的表现!大家可以将此文章中提到的改进策略用于别的智能算法的改进。 参考文献&…

Capstone 反汇编引擎

文章目录 前言一、Capstone简介二、示例代码 前言 介绍了capstone反汇编引擎的用法 一、Capstone简介 Capstone 是一个轻量级的多平台、多架构的反汇编框架,用纯 C 语言实现。可以说它是如今世界上最优秀的反汇编引擎,IDA,Radare2&#xf…

g++模板显式实例化big file例子

前言 模板是编程中高级工具,类似C语言的宏生成代码,但却比宏更强大,例如,对于调试的支持,以及实现更严格的语法检查。 如果用节省代码来定义工具的好坏,无疑不管用C语言宏来生成代码,或者用C的…

英语连词总结

前言 总结一些常用的英语连词,以下用法只是我希望我自己这么用。分类我可能分的不好,慢慢积累,慢慢改进。 1)表递进: firstly、secondly、thirdly、finally、af first、at the beginning、in the end、to begin with&#xff0…

栈和队列基础

栈 先进后出 队列 先进先出 卡哥栈和队列基础 用栈实现队列 java 中有stack 和Deque 两种类型可以实现栈 class MyQueue {Deque<Integer> stack1;Deque<Integer> stack2;public MyQueue() {stack1new ArrayDeque<Integer>();stack2new ArrayDeque<…