Java 最常见的面试题:说一下乐观锁和悲观锁

简介: Java 最常见的面试题:说一下乐观锁和悲观锁

乐观锁和悲观锁是两种不同的锁机制,主要用于解决并发问题。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。悲观锁认为竞争总是会发生,因此每次对某资源进行操作时,都会先加锁,这样其他线程来访问该资源就会被阻挡在外,直到悲观锁被释放。悲观锁在常用的synchronized锁就是一个例子,synchronized锁会根据线程的竞争情况,会对锁进行升级。

相对于悲观锁,乐观锁采取了更加宽松的加锁机制。乐观锁认为竞争不总是会发生,因此它不需要持有锁,而是通过CAS(Compare And Swap)算法实现资源同步。如果CAS操作失败,则表示发生冲突,那么就应该有相应的重试逻辑。

总的来说,悲观锁和乐观锁是人们定义出来的概念,他们处理并发资源的方式不同,悲观锁采用封锁方式,而乐观锁则采用无锁+CAS的方式。

相关文章
|
5天前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
19 4
|
5天前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
5天前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
5天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
5天前
|
SQL 监控 druid
Java Druid 面试题
Java Druid 连接池相关基础面试题
|
5天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
25天前
|
Java
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋
|
存储 Java 程序员
Java面试题日积月累(数据库30道)
Java面试题日积月累(数据库30道)
82 0
|
6月前
|
SQL 安全 Java
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
67 0
|
6月前
|
druid Java 数据库连接
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
104 0