摘要:
ReentrantLock比Synchronized更加灵活。 ReentrantLock reentrantLock = new ReentrantLock(); ReentrantLock有以下几个重要的方法: reentrantLock.lock(),//上锁 reentrantLock.un 阅读全文
posted @ 2025-07-10 22:47
Charlie-Pang
阅读(8)
评论(0)
推荐(0)
摘要:
实现思路 源代码 public class SharedQueue { private int queueSize = 10; private ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(queueSize); class 阅读全文
posted @ 2025-07-10 21:36
Charlie-Pang
阅读(8)
评论(0)
推荐(0)
摘要:
方法名 所属类 是否释放锁 线程状态变化 用途 抛异常 join() Thread 类 ❌ 不释放锁 当前线程等待目标线程执行完 等待其他线程执行完再继续执行 是 sleep() Thread 类 ❌ 不释放锁 当前线程暂停指定时间 模拟延时、节省 CPU 资源等 是 wait() Object 类 阅读全文
posted @ 2025-07-10 18:02
Charlie-Pang
阅读(21)
评论(0)
推荐(0)
摘要:
举例解释 AtomicInteger counter = new AtomicInteger(5); boolean success = counter.compareAndSet(5, 6); // 如果当前是5,则设置为6 原理 1、CAS 依赖底层 CPU 提供的汇编语言原子指令 lock c 阅读全文
posted @ 2025-07-10 16:35
Charlie-Pang
阅读(9)
评论(0)
推荐(0)
摘要:
该图是volatile关键字更新的过程。 JMM内存模型 read(读取):从主内存读取数据 load(载入):将主内存读取到的数据写入工作内存 use(使用):从工作内存读取数据来计算 assign(赋值):将计算好的值重新赋值到工作内存中 store(存储):将工作内存数据写入主内存 write 阅读全文
posted @ 2025-07-10 16:20
Charlie-Pang
阅读(9)
评论(0)
推荐(0)
摘要:
as-if-serial语义 不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变。 happens-before 8大原则 阅读全文
posted @ 2025-07-10 14:51
Charlie-Pang
阅读(5)
评论(0)
推荐(0)