随笔分类 - Java / Java 并发编程
摘要:目录题目方案一:synchronized方法二:ReentrantLock方法三:ReentrantLock + Condition(非公平锁)方法四:ReentrantLock + Condition(公平锁)方法五:Semaphore 题目 使用三个线程 T1、T2、T3,如何让他们按顺序交替打
阅读全文
摘要:目录Java 对象内存结构Java 对象在内存中的布局Java 对象头MonitorJava 中的锁状态无锁状态偏向锁轻量级锁(自旋锁)重量级锁锁的优缺点对比锁升级场景场景1: 经常只有某一个线程来加锁。场景2: 有线程来参与锁的竞争,但是获取锁的冲突时间很短场景3: 有大量的线程参与锁的竞争,冲突
阅读全文
摘要:目录同步器Semaphore原理示例Exchanger总结CountDownLatchCyclicBarrier原理应用场景示例Phaser示例 同步器 JUC 包下的工具类除了 locks,还包含其他的工具类,如:Semaphore、CountDownLatch、CyclicBarrier、Exc
阅读全文
摘要:目录线程同步条件对象synchronized 关键字监视器volatile 线程同步 条件对象 通常线程进入临界区,却发现需要满足某一个条件后,才能继续执行,这时,就需要使用一个条件对象,来管理那些已经获得了一个锁,但是,却不做有用工作的线程。这些条件对象经常被称为条件变量(Conditional
阅读全文
摘要:目录Condition可中断锁和不可中断锁有什么区别?原理源码分析awaitaddConditionWaiterunlinkCancelledWaiterssignaltransferForSignal总结await 与 signalLock 和 Condition 的应用附录链表中头节点的作用不带
阅读全文
摘要:目录ThreadLocalThreadLocal 实现线程隔离的原理ThreadLocal 内存泄漏场景 ThreadLocal ThreadLocal是一个将在多线程中为每一个线程创建单独的变量副本的类; 当使用ThreadLocal来维护变量时, ThreadLocal会为每个线程创建单独的变量
阅读全文
摘要:目录ReentrantLockReentrantLock 特性概览源码分析抽象同步器:Sync非公平同步器:NonfairSync公平同步器:FairSync小结 ReentrantLock ReentrantLock 是一个可重入的互斥锁,又被称为“独占锁”。 ReentrantLock 类实现了
阅读全文
摘要:synchronized 关键字 synchronized 是 Java 中的一个关键字,翻译成中文是同步的意思,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 使用方法 修饰实例方法 给当前对象实例加锁,进入同步代码前要获得 当前对象实例的
阅读全文
摘要:目录简介方法介绍阻塞和唤醒示例示例1示例2示例3阻塞对象 blocker 的作用和显式锁、隐式锁等待唤醒的区别 简介 java.util.concurrent.locks.LockSupport 是一个工具类,提供了基本的线程阻塞和唤醒功能,它是创建锁和其他同步组件的基础工具,内部是基于 sun.m
阅读全文
摘要:目录前言CLH 锁AQS 框架AQS 核心思想AQS 的同步状态AQS 对资源的共享方式AQS 的重要方法AQS 的数据结构NodeConditionObjectConditionConditionObjectAQS 源码分析核心方法获取资源:acquireaddWaiteracquireQueue
阅读全文
摘要:目录线程池线程池创建方式通过 ThreadPoolExecutor 创建如何给线程池命名ThreadFactoryBuilder实现一个 ThreadFactory通过 JUC 工具类创建线程池的核心设计与实现ThreadPoolExecutor 的总体设计ThreadPoolExecutor 的继
阅读全文
摘要:目录锁的分类乐观锁和悲观锁悲观锁乐观锁乐观锁的实现版本号机制CAS 算法乐观锁的问题ABA 问题循环时间长开销大只能保证一个共享变量的原子操作对比自旋锁和适应性自旋锁无锁、偏向锁、轻量级锁、重量级锁可重入锁和非可重入锁公平锁和非公平锁读写锁和排它锁JUC 包下的锁抽象类 AQS/AQLS/AOS接口
阅读全文
摘要:目录并发容器类并发 MapConcurrentMapConcurrentHashMapConcurrentSkipListMap并发 Queue并发 Set阻塞队列BlockingQueue 的操作方法BlockingQueue 的实现类ArrayBlockingQueueLinkedBlockin
阅读全文