![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 67
梁山教父
二指弹宗师
展开
-
面试必问的CAS原理你会了吗?
是比较并交换的意思,它是一条 CPU 并发原语,用于判断内存中某个值是否为预期值,如果是则更改为新的值,这个过程是原子的。下面用一个小示例解释一下。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,计算后要修改后的新值B。1、初始状态:在内存地址V中存储着变量值为 1。线程1想要把内存地址为 V 的变量值增加1。这个时候对线程1来说,旧的预期值A=1,要修改的新值B=2。3、在线程1要提交更新之前,线程2捷足先登了,已经把内存地址V中的变量值率先更新成了2。原创 2023-04-18 09:59:08 · 541 阅读 · 0 评论 -
ConcurrentHashMap分段锁
是支持高并发的线程安全的 HashMap。相较于 HashTable 使用 synchronized 方法来保证线程安全,ConcurrentHashMap 采用分段锁的方式,在线程竞争激烈的情况下 ConcurrentHashMap 的效率高很多。ConcurrentHashMap 中的分段锁称为 Segment,它的内部结构是维护一个 HashEntry 数组,同时 Segment 还继承了 ReentrantLock。原创 2023-04-18 10:26:25 · 605 阅读 · 0 评论 -
说一说synchronized与Lock的区别
synchronized锁可重入、不可中断、非公平;Lock锁可重入、可中断、可公平/不公平,并可以细分读写锁以提高效率。synchronized在代码执行完或出现异常时自动释放锁;Lock不会自动释放锁,需要在finally中显示释放锁。synchronized是Java关键字,在JVM层面实现加锁和解锁;Lock是一个接口,在代码层面实现加锁和解锁。synchronized无法得知是否获取锁成功;Lock可以设置获取锁失败的超时时间。synchronized可以用在代码块上、方法上;原创 2023-04-18 16:36:13 · 82 阅读 · 0 评论