
JDK
文章平均质量分 88
翻身已碰头
人法地、地法天、天法道、道法自然
展开
-
AQS系列之Condition解析
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之排斥锁的应用解析:ReentrantLockAQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLockAQS系列之Condition解析AQS系列之Condition解析一、简介一、简介Condition是AQS中基于排斥锁的另一原创 2022-01-14 23:36:34 · 1750 阅读 · 0 评论 -
AQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLock
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之排斥锁的应用解析:ReentrantLockAQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLockAQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLock一、简介1. Sync2. state3. ReadLock原创 2021-12-29 22:37:12 · 754 阅读 · 0 评论 -
AQS系列之排斥锁的应用解析:ReentrantLock
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之排斥锁的应用解析:ReentrantLockAQS系列之排斥锁的应用解析:ReentrantLock一、简介一、简介...原创 2021-12-28 21:40:52 · 637 阅读 · 0 评论 -
AQS系列之共享锁的应用解析:CountDownLatch
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之共享锁的应用解析:CountDownLatch一、简介二、获取资源三、释放资源一、简介CountDownLatch即倒排计数,是AQS共享锁的另一个经典应用。其应用主要是一个(或多个)线程等待一系列线程完成某些操作后才继续向下执行的场景。换种程序上的描述原创 2021-12-28 00:03:07 · 608 阅读 · 0 评论 -
AQS系列之共享锁的应用解析:Semaphore
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:Semaphore一、简介1. Sync2. state3. 对外方法二、资源获取acquire1. 非公平锁1. 公平锁三、资源释放一、简介Semaphore即信号量,常用于同时限制访问某些资源的线程数量。其内部抽象类Fair继承了AQS,Semaphore正是通过Sync实现数量的控制1.原创 2021-12-27 23:46:58 · 641 阅读 · 0 评论 -
AQS系列之共享锁解析
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁解析一、获取资源1. 获取资源acquireShared2. 排队获取资源二、释放资源一、获取资源1. 获取资源acquireSharedpublic final void acquireShared(int arg) { if (tryAcquireShared(arg) < 0) doAcquireShared(arg)原创 2021-12-26 19:30:19 · 949 阅读 · 0 评论 -
AQS系列之以排斥锁分析
系列文章目录AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之以排斥锁分析系列文章目录一、获取资源1. 获取资源acquire2. 加入队列addWaiter3. 排队获取资源acquireQueued4. 阻塞检查shouldParkAfterFailedAcquire二、释放资源1. 释放资源release2. 唤醒后继节点unparkSuccessor三、获取&释放资源总流程四、其他获取资源的方法1. 响应中断acquireIn原创 2021-12-25 19:14:19 · 978 阅读 · 0 评论 -
AQS系列之AbstractQueuedSynchronizer基础分析
AQS系列之AbstractQueuedSynchronizer基础分析@[TOC]AQS系列之AbstractQueuedSynchronizer和CLH队列一、简介AQS是JDK并发包中的一个抽象类,全称为AbstractQueuedSynchronizer,即抽象队列同步器,是一系列同步实现的模板类,如锁Lock,信号量Semaphore,倒排计数器CoundDownLatch等都是基于AQS实现的,同时还提供了Condition对象,其await和sign、signAll对象可以用于代替O原创 2021-12-25 14:59:23 · 659 阅读 · 0 评论 -
Queue常用类解析之ConcurrentLinkedQueue
Queue常用类解析之PriorityQueue原创 2019-04-21 16:59:20 · 537 阅读 · 0 评论 -
Queue常用类解析之PriorityQueue
一、接口介绍Queue :Collection的子接口,先进先出的集合。BlockingQueue:Queue的子接口,阻塞式队列,线程安全的队列,主要用于多线程场景尤其是线程池中。TransferQueue:BlockingQueue的子接口,一个生产者-消费者模式的队列,生产者会阻塞等待着消费者对元素进行消费。二、PriorityQueue优先级队列,队列内的元素按照一定的顺序进行排...原创 2019-04-17 10:25:58 · 882 阅读 · 0 评论 -
Queue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueue一、简介BlockingQueue是concurrent包下的一个并发Queue的接口,称为阻塞队列。与ConcurrentLinkedQueue通过CAS方式来实现并发不同,BlockingQueue的并发方案是阻塞等待。Jdk为BlockingQueue提供了不少的实现类,...原创 2019-04-22 09:23:14 · 1891 阅读 · 0 评论 -
Queue常用类解析之BlockingQueue(二):ArrayBlockingQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueue接着上文对BlockingQueue的介绍继续向下五、ArrayBlockingQueue从命名可以看出,这是一个循环数组表示的的阻塞队列。与前面介绍的BlockingQueue不同,ArrayBlockingQueue在入队和出队时都有可能会陷入阻塞。1. 属性/** T...原创 2019-04-22 16:54:43 · 1124 阅读 · 0 评论 -
Queue常用类解析之BlockingQueue(三):LinkedBlockingQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueueQueue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueueQueue常用类解析之BlockingQueue(二):ArrayBlockingQueue接着上文对BlockingQueu...原创 2019-04-23 14:19:59 · 450 阅读 · 0 评论 -
Queue常用类解析之BlockingQueue(四):SynchronousQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueueQueue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueueQueue常用类解析之BlockingQueue(二):ArrayBlockingQueueQueue常用类解析之Blocki...原创 2019-05-13 11:47:54 · 718 阅读 · 0 评论 -
Queue常用类解析之BlockingQueue(五):LinkedTransferQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueueQueue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueueQueue常用类解析之BlockingQueue(二):ArrayBlockingQueueQueue常用类解析之Blocki...原创 2019-05-17 15:19:56 · 1373 阅读 · 0 评论 -
并发集合之CopyOnWriteArrayList和CopyOnWriteArraySet
一、简介CopyOnWrite的意思是写时复制,简单的说就是在对容器操作时,不是直接进行操作,而是先将容器复制一份,对新的容器操作后,再用新的容器覆盖原来的容器。CopyOnWrite可以实现并发读操作,因为容器的写操作不会读当前容器造成影响。CopyOnWrite的写操作需要加锁,不然n个写操作就会有n个容器副本,并且这n个副本会进行覆盖,最终只有1个副本的操作生效。CopyOnWrit...原创 2019-04-16 10:53:02 · 376 阅读 · 0 评论 -
Map源码解析之ConcurrentHashMap(JDK1.7)
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)Map源码解析之ConcurrentHashMa...原创 2019-04-09 15:13:13 · 470 阅读 · 0 评论 -
Map源码解析之HashMap
Map使我们在开发过程中经常使用的一个数据结构,其主要有3个特点:键值对key-value、键key唯一且不可重复,每个键key都能且只能映射到一个value值。HashMap又是Map中最常被使用的一个实现类,除了Map的3个基础特点外还具备无序性、key和value都可以为null、非线程安全等特点。HashMap由数组组成,每个数组的元素都是一条链表,在jdk1.8中当链表超出一定长度会...原创 2018-11-06 16:45:05 · 333 阅读 · 0 评论 -
Map源码解析之HashMap补充:集合、迭代器、compute、merge、replace
Map源码解析之HashMapMap源码解析之HashMap红黑树前面两篇文章分析了HashMap的数组+链表/红黑树的数据结构以及新加、增加节点、删除节点、查询节点等相关方法。下面我们分析一下HashMap中的集合和循环等方法。一. HashMap中的集合在HashMap中有3个集合类的成员变量,分别为keySet,values和entrySet,并且可通过HashMap#keySet、...原创 2018-11-09 14:02:13 · 1384 阅读 · 0 评论 -
Map源码解析之LinkedHashMap
Map源码解析之HashMapMap源码解析之HashMap红黑树HashMap源码解析之补充说明:集合、迭代器、compute、merge、replace在分析完了HashMap源码之后,我们接着看另一种形式的map :LinkedHashMap。LinkedHashMap是HashMap的子类,相比HashMap而言,其数据结构在HashMap的基础上多了双向链表将所有节点连接起来,从...原创 2018-11-09 17:01:22 · 407 阅读 · 0 评论 -
Map源码解析之HashMap红黑树
Map源码解析之HashMap上一篇文章分析了HashMap的源码,但关于红黑树的部分都是粗略带过,这一篇文章则将着重分析HashMap中和红黑树相关的逻辑代码。红黑树的理论知识可以参考红黑树(一)之 原理和算法详细介绍进行了解。一. 红黑树的特性(1) 每个节点或者是黑色,或者是红色。(2) 根节点是黑色。(3) 每个叶子节点(空节点,NIL节点)是黑色。(4) 如果一个节点是红色...原创 2018-11-08 19:20:24 · 928 阅读 · 0 评论 -
Map源码解析之TreeMap
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMap前面几篇文章分别解析了HashMap和LinkedHashMap,这一片文章将解析Map的另一种数据结构–TreeMap。TreeMap基于红黑树实现的,因此TreeMap是有序的(Link...原创 2018-11-12 16:34:02 · 447 阅读 · 0 评论 -
Set源码解析
Set是日常开发中经常使用的一个数据结构,其元素不可重复。无论是HashSet、LinkedHashSet还是TreeSet。它们的数据结构的本质都是对应的Map。其内部有一个Map类型的成员变量map,HashSet的元素对应map的key值,对应的value值统一为一个空对象(PRESENT )一、 主要的成员变量//HashSetprivate transient HashMap&...原创 2018-11-14 11:45:48 · 249 阅读 · 0 评论 -
Map源码解析之HashTable
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMap之前文章分析的HashMap、LinkedHashMap、TreeMap虽然有各自不同的特性,但是它们都是线程不安全的,这一篇文章中,我们将解析线程安全的类Ha...原创 2018-12-06 17:20:40 · 232 阅读 · 0 评论 -
Map源码解析之ConcurrentHashMap(JDK1.8)(一)
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable一、简述HashMap和LinkedHashMap都不是线程安全的,而线程安全的HashTable和Collections...原创 2019-03-06 15:12:44 · 801 阅读 · 0 评论 -
Map源码解析之ConcurrentHashMap(JDK1.8)(二)
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)本篇文章将在 Map源码解析之Concurren...原创 2019-03-08 10:07:18 · 674 阅读 · 0 评论 -
Map源码解析之ThreadLocalMap
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)Map源码解析之ConcurrentHashMa...原创 2019-04-10 15:54:26 · 1173 阅读 · 0 评论 -
线程池ThreadPoolExecutor源码解析
一、简述线程池维护着一定的线程数量,通过线程复用减少了线程频繁开启销毁的消耗。当新任务提交到线程池时:如果线程池中任务数量小于核心线程数量,启动新线程执行任务。如果线程池中任务数量大于或等于核心线程数量,且队列未满,将任务加入队列。如果线程池中任务数量大于或等于核心线程数量,但小于最大线程数量,且队列已满,启动新线程执行任务。如果线程池中任务数量等于最大线程数量,且队列已满,执行拒绝策...原创 2019-04-02 10:51:57 · 257 阅读 · 0 评论 -
线程池源码解析之FutureTask
一、简介1. 类继承关系2. 状态private volatile int state;private static final int NEW = 0;private static final int COMPLETING = 1;private static final int NORMAL = 2;private static final i...原创 2019-04-08 11:58:31 · 740 阅读 · 0 评论 -
线程池ScheduledThreadPoolExecutor源码解析
一、简介ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类,继承了父类对线程的管理维护功能,通过还可以执行延迟和定时任务。/* * This class specializes ThreadPoolExecutor implementation by * * 1. Using a custom task type, ...原创 2019-04-08 12:01:43 · 2045 阅读 · 1 评论 -
引用解析之Reference和ReferenceQueue
一、引用类型Java通过引用来访问对象,从jdk1.2开始,Java将引用分为以下4种类型,强度依次减弱。(1)强引用 Strong Reference日常开发中最经常使用的引用类型,例如Object object = new Object()使用的就是强引用。当一个对象的强引用存在,这个对象用于不会被回收。在Java中没有专门的类与之对应。(2)软引用 Soft Reference软引...原创 2019-04-12 13:51:58 · 1853 阅读 · 0 评论 -
Map源码解析之WeakHashMap
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)Map源码解析之ConcurrentHashMa...原创 2019-04-12 15:49:42 · 360 阅读 · 0 评论 -
Class对象的getXXXClass和getXXXName
getXXXClass方法获取class对象在讲解具体的方法之前,我们先介绍一下java类(接口)的划分方法。java的class对象分为5种,这一点在getEnclosingClass方法的注释中有写明,分别是:a. Top类b. Nested类:嵌套类,即静态成员类c. Inner类:内部类,即普通成员类d. Local类:局部类,在方法中定义的类e. Anonymous:匿...原创 2018-10-29 17:08:40 · 990 阅读 · 0 评论