随笔分类 - Java线程进阶
摘要:Semaphore源码解析 描述: 一个计数信号量。从概念上讲,信号量维护一组许可。每个acquire() 方法在必要时阻塞,直到获得许可,然后才能使用它。每次 release() 释放一个许可,潜在地释放一个阻塞获取者。但是,没有使用实际的许可证对象; Semaphore只保留可用数量的计数,并相
阅读全文
摘要:CyclicBarrier源码解析 描述: 一个同步帮助,允许一组线程互相等待到达一个共同的屏障点。Cyclicbarrier 在涉及固定大小的线程组的程序中非常有用,这些线程必须偶尔相互等待。这个屏障称为cyclic,因为它可以在等待的线程被释放后被重用。 A CyclicBarrier支持一个可
阅读全文
摘要:CountDownLatch源码解析 描述: 一种同步辅助工具,允许一个或多个线程等待在其他线程中执行的一组操作完成。 用给定的count初始化 CountDownLatch 。因为调用了 countDown() 方法, await() 方法会一直阻塞,直到当前计数为零。在这之后,所有等待的线程都会
阅读全文
摘要:StampedLock源码解析 StampedLock 描述 一种基于能力的锁,具有三种模式,用于控制读写访问。StampedLock的状态由版本和模式组成。锁获取方法返回一个表示并控制对锁状态访问的戳记;这些方法的 “try” 版本可能会返回特殊值0,表示无法获得访问权限。锁释放和转换方法需要标记
阅读全文
摘要:ReentrantReadWriteLock 源码解析 ReentrantReadWriteLock 类描述 ReadWriteLock 的实现支持与 ReentrantLock 相似的语义。 该类具有以下属性: 获取顺序: 这个类不会对锁访问施加读取器或写入器的优先顺序。但是,它确实支持一个可选的
阅读全文
摘要:ReentrantLock 源码解析 ReentrantLock 类描述 一种可重入互斥锁 Lock ,与使用 synchronized 方法和语句访问的隐式监控锁具有相同的基本行为和语义,但具有扩展的功能。 一个 ReentrantLock 被上次成功锁住但还没有解锁的线程拥有,当锁不属于其他线程
阅读全文
摘要:AQS 类中的属性以及方法说明 AbstractQueuedSynchronizer 类的描述信息 提供一个框架,用于实现依赖先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件等)。此类被设计为大多数类型的同步器的有用基础,这些同步器依赖于单个原子 int 值来表示状态。子类必须定义
阅读全文
摘要:/** * * * * * 拷贝的 AbstractQueuedSynchronizer(AQS) 的源码,进行代码注释 * 拷贝的 AbstractQueuedSynchronizer(AQS) 的源码,进行代码注释 * 拷贝的 AbstractQueuedSynchronizer(AQS) 的源
阅读全文
摘要:AQS 中的 ConditionObject 内部类 ConditionObject 内部类 主要用作条件等待队列,条件等待队列为单项链表 加入条件队列的过程:等待队列的节点调用 await() 从同步队列移除,追加到条件队列的队尾 从条件队列出队的过程:当其他线程调用 single()/singl
阅读全文
摘要:AQS 中的 Node 内部类 Node 内部类 Node 的主要作用:作为等待队列的节点存在 1.作为同步等待队列中的节点存在 (nextWaiter值为 SHARED/EXCLUSIVE 表示,该节点在某种模式下等待 ) 2.作为条件等待队列的节点存在(nextWaiter值为下一个节点,注意条
阅读全文
摘要:##Condition 条件队列入队过程 1.初始状态 2.线程0 调用 await 方法 3.线程1 调用 await 方法 ##Condition 条件队列出队过程 1.初始状态 2.条件队列 线程0 出队 3.条件队列 线程1 出队
阅读全文
摘要:###非阻塞的获取和释放独占锁的流程 ,acquire 方法 ###可中断式获取和释放独占锁。acquireInterruptibly 方法 ###超时获取和释放独占锁。tryAcquireNanos 方法
阅读全文
摘要:###互斥锁:同步队列的初始化构建 ###互斥锁:同步队列的出队过程
阅读全文
摘要:Synchronized相关问题 Synchronized 锁信息是存储在哪里的? 当 synchronized 修饰普通方法时,锁信息是存储在 this 对象中头的 当 synchronized 修饰静态方法时,锁信息是存储在 当前类Class对象头中的 当 synchronized(obj) 修
阅读全文
摘要:AbstractOwnableSynchronizer 类 此类提供了创建锁和相关同步器的基础,这些锁和同步器可能需要所有权的概念。 AbstractOwnableSynchronizer类本身不管理或使用此信息。 然而,子类和工具可能会使用适当维护的值来帮助控制和监视访问并提供诊断。 Java版本
阅读全文
摘要:Condition 接口 Condition将 Object 监视方法(wait、notify和notifyAll)分解为不同的对象,通过将它们与任意Lock实现的使用结合起来,实现每个对象具有多个等待集的效果。当Lock取代 synchronized 方法和语句的使用时,Condition取代
阅读全文