文章分类 -  JUC

摘要:JDK8源码 put操作 public V put(K key, V value) { return putVal(key, value, false); //调用putVal } putVal: final V putVal(K key, V value, boolean onlyIfAbsent 阅读全文
posted @ 2024-01-29 21:33 ︶ㄣ演戲ㄣ 阅读(1) 评论(0) 推荐(0) 编辑
摘要:原子性:保证指令不会受到线程上下文切换的影响 可见性:保证指令不会受到CPU缓存的影响 有序性:保证指令不会受到CPU并行优化的影响 可见性问题(缓存) import lombok.extern.slf4j.Slf4j; @Slf4j(topic = "test") public class Tes 阅读全文
posted @ 2024-01-24 15:01 ︶ㄣ演戲ㄣ 阅读(16) 评论(0) 推荐(0) 编辑
摘要:犹豫模式(Balking) 用在一个线程发现另一个线程或本地线程已经做了某一件相同的事,那么本线程就无需再做了,直接结束返回。 package memory; import lombok.extern.slf4j.Slf4j; @Slf4j(topic = "balking") public cla 阅读全文
posted @ 2024-01-23 21:10 ︶ㄣ演戲ㄣ 阅读(2) 评论(0) 推荐(0) 编辑
摘要:固定运行顺序 比如,两个线程,一个打印1,一个打印2。要求必须先打印2再打印1 wait/notify实现(lock/unlock相似) import lombok.extern.slf4j.Slf4j; @Slf4j(topic = "fixedOrder") public class FixOr 阅读全文
posted @ 2024-01-23 18:10 ︶ㄣ演戲ㄣ 阅读(3) 评论(0) 推荐(0) 编辑
摘要:相比synchronized,它具备以下特点: 可中断 可以设置超时时间 可以设置为公平锁 支持多个条件变量:进入不同的waitSet 与synchronized一样,支持可重入 基本语法 reentrantLock.lock() try{ //临界区 }finally { //释放锁 reentr 阅读全文
posted @ 2024-01-23 14:26 ︶ㄣ演戲ㄣ 阅读(4) 评论(0) 推荐(0) 编辑
摘要:与保护性暂停模式中的GuardObject不同,不需要产生结果和消费结果的线程一一对应。 消费队列可以用来平衡生产和消费的线程资源 生产者只关心产生结果数据,消费者只关心处理结果数据 消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据 点击查看代码 import lombok.exter 阅读全文
posted @ 2024-01-22 19:27 ︶ㄣ演戲ㄣ 阅读(2) 评论(0) 推荐(0) 编辑
摘要:Java对象头 调用对象的hashCode 重量级锁会在monitor中记录hashcode 轻量级锁会在锁记录中记录hashcode 调用了对象的hashcode,但偏向锁的对象markword中存储的是线程id,如果调用hashcode会导致偏向锁被撤销 其他线程使用对象 当一个线程使用完偏向锁 阅读全文
posted @ 2024-01-19 11:48 ︶ㄣ演戲ㄣ 阅读(9) 评论(0) 推荐(0) 编辑
摘要:interrupt实现 import lombok.extern.slf4j.Slf4j; @Slf4j public class TwoPhaseTerminationDemo{ public static void main(String[] args) throws InterruptedEx 阅读全文
posted @ 2024-01-16 22:26 ︶ㄣ演戲ㄣ 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示