加锁的方式有哪些 ?

简介: 使用synchronized关键字使用Lock锁synchronized和Lock有什么区别 ? 首先synchronized是Java内置关键字,在JVM层面,Lock是个Java类;synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。 synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁; 而 lock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁。 通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。

使用synchronized关键字
使用Lock锁
synchronized和Lock有什么区别 ?
首先synchronized是Java内置关键字,在JVM层面,Lock是个Java类;
synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。
synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁; 而 lock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁。
通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。

相关文章
|
Unix Linux
完全指南:mv命令用法、示例和注意事项 | Linux文件移动与重命名
完全指南:mv命令用法、示例和注意事项 | Linux文件移动与重命名
4735 0
|
4月前
|
Linux Shell 开发工具
【超详细】Git下载 | Git版本控制工具安装保姆级教程(附官网安装包)
Git是由Linus Torvalds于2005年开发的分布式版本控制系统,全球最流行。它可本地完整存储历史、高效分支管理、离线操作,支持多人协作与精准版本回溯,是开发者必备基础工具。(239字)
4829 136
|
4月前
|
NoSQL 算法 Java
【分布式】分布式核心组件——分布式锁:Redis/ZooKeeper/etcd 实现方案(附全方位对比表)、优缺点、Redlock、时钟回拨问题
本文系统解析分布式锁原理与实践,涵盖Redis/ZooKeeper/etcd三大方案、Redlock算法、时钟回拨等核心议题,兼具深度、广度与落地性,助你构建高可用、强一致的分布式并发控制能力。
|
6月前
|
存储 关系型数据库 MySQL
索引为什么快?若依数据库索引原理深度解析
深入了解数据库索引的核心工作原理,我会用通俗比喻 + 核心结构(B + 树)拆解 + 执行流程的方式讲解,从底层逻辑说清 “索引为什么能提速”,同时结合 MySQL InnoDB(若依框架默认数据库引擎)的实际实现,让原理落地可理解
309 4
|
Nacos 微服务 监控
Nacos:微服务架构中的“服务管家”与“配置中心”
Nacos是阿里巴巴开源的微服务“服务管家”与“配置中心”,集服务注册发现、动态配置管理、健康检查、DNS发现等功能于一体,支持多语言、多协议接入,助力构建高可用、易运维的云原生应用体系。
1484 155
|
12月前
|
缓存 负载均衡 JavaScript
Nginx:高性能Web服务器与反向代理利器
Nginx:高性能Web服务器与反向代理利器
520 110
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1674 0
|
JavaScript 前端开发 Java
115.【SpringBoot(IDEA)+Vue(Vscode)前后端交互】(一)
115.【SpringBoot(IDEA)+Vue(Vscode)前后端交互】
2013 0
|
人工智能 自然语言处理 开发工具
Agent调研--19类Agent框架对比(下)
Agent调研--19类Agent框架对比(下)
5145 0
|
测试技术
loadrunner 脚本优化-参数化方法
loadrunner 脚本优化-参数化方法
906 121