摘要: 通过数组与值实现,看源码 public void add(long x) { Cell[] as; long b, v; int m; Cell a; // 尝试直接通过CAS操作累加base的值 // 如果cells数组不为null,或者通过CAS操作未能成功累加base的值 //相当于是更新ba 阅读全文
posted @ 2024-08-15 18:24 辉辉、 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 关键信息 state(volatile修饰)/双向链表数据结构 AQS有那些实现? ReentrantLock、Semaphore、CountDownLatch AQS分为同步队列和条件队列 public class BoundedBuffer<T> { private final Lock loc 阅读全文
posted @ 2024-08-15 18:06 辉辉、 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 1.对象有三个区域 对象头/实例数据/对其填充 对象头又包含Mark Word/类型指针->指向方法区/数组长度 Mark Word如下图所示 2.偏向锁 当线程首次进入synchronized,他会将对象头的mark work更新为偏向锁。 JDK已废除 3.轻量锁 当线程获取已被偏向的锁时,会将 阅读全文
posted @ 2024-08-15 16:49 辉辉、 阅读(80) 评论(0) 推荐(0) 编辑
摘要: synchronized 代码块实现原理 java 字节码中,用来实现同步代码块的是 monitorenter 和 monitorexit 指令。 monitorenter 指令执行时,当前线程试图获取 objectref 所存储的对象锁(ObjectMonitor 对象) 如果取到的 monito 阅读全文
posted @ 2024-08-15 15:59 辉辉、 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 1.synchronized 2.ReentrantLock(可重入锁) public class Main { ReentrantLock lock = new ReentrantLock(); private ThreadLocal stream = new ThreadLocal(); pub 阅读全文
posted @ 2024-08-15 15:30 辉辉、 阅读(7) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal有内部类ThreadLocalMap,ThreadLocalMap是ThreadLocal的核心 1.每个线程下的有一个ThreadLocalMap static class ThreadLocalMap { static class Entry extends WeakRef 阅读全文
posted @ 2024-08-15 15:15 辉辉、 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 1.参数说明 acc:上下文 corePoolSize:核心工作线程 maximumPoolSize:最大工作数量线程,包含了核心工作线程 keepAliveTime:非核心线程最大空闲回收时间 TimeUnit:指定keepAliveTime时间单位 workQueue:工作队列。如事件都让可用的 阅读全文
posted @ 2024-08-15 10:55 辉辉、 阅读(8) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示