12 2019 档案

摘要:ConcurrentHashMap 内部结构 在JDK1.8之前的实现结构是:ReentrantLock+Segment+HashEntry+链表 JDK1.8之后的实现结构是:synchronized+CAS+Node+链表或红黑树(与HashMap一致) 而1.8之前锁的是Segment,1.8 阅读全文
posted @ 2019-12-20 17:25 露娜妹 阅读(442) 评论(1) 推荐(2) 编辑
摘要:HashMap 内部结构 内部是一个Node数组,每个Node都是链表的头,当链表的大小达到8之后链表转变成红黑树。 put操作 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node< 阅读全文
posted @ 2019-12-17 17:30 露娜妹 阅读(278) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch 众所周知,它能解决一个任务必须在其他任务完成的情况下才能执行的问题,代码层面来说就是只有计数countDown到0的时候,await处的代码才能继续向下运行,例如: 运行结果: 源码 实际上内部十分简单,里面只有一个AQS的子类 下面看具体做了什么事情 先来看await 阅读全文
posted @ 2019-12-16 17:15 露娜妹 阅读(1447) 评论(0) 推荐(0) 编辑
摘要:线程安全可以概括为三个方面:原子性、可见性和有序性。 原子性:对于涉及共享变量的操作看做一个整体,在同一时间内,只能由一个线程执行,在其它线程看来,这部分操作要么尚未开始,要么已经完成。Java中,基本类型除了long和double,其它类型变量的写操作都是原子性的。 可见性:一个线程修改了共享变量 阅读全文
posted @ 2019-12-12 17:04 露娜妹 阅读(497) 评论(0) 推荐(1) 编辑
摘要:LinkedTransferQueue 功能 全名 简述 基于链表的的无界队列。队列的头是某个生产者在队列中停留时间最长的元素。队列的尾部是某个生产者在队列中时间最短的元素。 注意,与大多数集合不同,size方法不是一个常量时间操作。由于这些队列的异步性,确定当前元素的数量需要遍历元素,因此如果在遍 阅读全文
posted @ 2019-12-06 18:29 露娜妹 阅读(357) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示