后端面试话术集锦第 十六 篇:java锁面试话术

本文是后端面试系列的第十六篇,聚焦于Java锁机制,涵盖乐观锁、悲观锁、公平锁、非公平锁、重入锁、不可重入锁、共享锁和独占锁等概念。详细解析了synchronized和ThreadLocal的区别,以及ConcurrentHashMap的线程安全性。同时,探讨了ReentrantLock、AQS框架和Synchronized的重入锁特性,以及乐观锁的实现原理和CAS操作。
摘要由CSDN通过智能技术生成

这是后端面试集锦第十六篇博文——java锁面试话术❗❗❗

1. 介绍一下乐观锁和悲观锁


乐观锁的话就是比较乐观,每次去拿数据的时候,认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制或者CAS算法实现。

乐观锁在读操作比较多的场景比较适用,这样可以提高吞吐量,就像数据库提供的write_condition机制,其实都是乐观锁。

悲观锁的话就是每次去拿数据的时候,也认为别人会修改数据,这个时候就会加上锁,这就导致其他线程想拿数据的话,就会阻塞,直到这个线程修改完成才会释放锁,让其他线程获取数据。

在数据库里的行级锁、表级锁都是在操作之前就先锁住数据再操作数据 ,都属于悲观锁。

Java中的synchronizedReentrantLock等独占锁就是悲观锁思想的实现。

·Java·中各种锁其实都是悲观锁的实现,在操作数据的时候,数据都会被当前线程锁住。

2. 介绍一下公平锁和非公平锁

  1. 公平锁:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网全栈开发实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值