随笔 - 2  文章 - 721  评论 - 6  阅读 - 35万

文章分类 -  JUC Souce Code

父子线程之间传值
摘要:分布式链路追踪系统的时候,需要解决异步调用透传上下文的需求,比如传递traceId,典型场景例子: 分布式跟踪系统 或 全链路压测(即链路打标) 日志收集记录系统上下文 Session级Cache 应用容器或上层框架跨应用代码给下层SDK传递信息 JDK对跨线程传递ThreadLocal的支持 vo 阅读全文
posted @ 2023-01-08 17:10 溪水静幽 阅读(330) 评论(0) 推荐(0) 编辑
LongAddr
摘要:LongAdder是java8中新增原子类,在多线程环境中比AtomicLong性能要高出不少,特别是写多的场景。 LongAdder的原理是,在最初无竞争时,只更新base的值,当有多线程竞争时通过分段的思想,让不同的线程更新不同的段,最后把这些段相加就得到了完整的LongAdder存储的值。 关 阅读全文
posted @ 2022-04-02 11:12 溪水静幽 阅读(617) 评论(0) 推荐(0) 编辑
ScheduledThreadPoolExecutor
摘要:ScheduledThreadPoolExecutor继承了ThreadPoolExecutor并实现了ScheduledExecutorService接口。线程池队列是DelayedWorkQueue,是一个延迟队列,ScheduledFutureTask是具有返回值的任务,继承自FutureTa 阅读全文
posted @ 2022-01-16 18:20 溪水静幽 阅读(42) 评论(0) 推荐(0) 编辑
DelayQueue
摘要:DelayQueue是一个内部依靠AQS队列同步器所实现的无界延迟阻塞队列 DelayQueue队列中每个元素都有个过期时间,并且队列是个优先级队列,当从队列获取元素时候,只有过期元素才会出队。 延迟对象需要覆盖 getDelay()与compareTo()方法,并且要注意 getDelay()的时 阅读全文
posted @ 2021-12-11 17:12 溪水静幽 阅读(140) 评论(0) 推荐(0) 编辑
ThreadPoolExecutor源码
摘要:ThreadPoolExecutor构造函数源码如下: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable 阅读全文
posted @ 2018-10-14 16:03 溪水静幽 阅读(127) 评论(0) 推荐(0) 编辑
LinkedHashMap
摘要:LinkedHashMap 继承 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。 LinkedHashMap的成员变量 private static final long serialVersionUID = 380 阅读全文
posted @ 2018-10-13 12:06 溪水静幽 阅读(204) 评论(0) 推荐(0) 编辑
Semaphore
摘要:信号量维护了一个许可集,在初始化Semaphore时需要为这个许可集传入一个数量值,该数量值代表同一时间能访问共享资源的线程数量。线程可以通过acquire()方法获取到一个许可,然后对共享资源进行操作,注意如果许可集已分配完,那么线程将进入等待状态,直到其他线程释放许可才有机会再获取许可,线程释放 阅读全文
posted @ 2018-10-08 20:43 溪水静幽 阅读(283) 评论(0) 推荐(0) 编辑
CyclicBarrier
摘要:CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称为循环 的 barrier。 parties用来记录线程个数,这里表示多少线程调用await后,所有线程才会 阅读全文
posted @ 2018-10-08 11:17 溪水静幽 阅读(192) 评论(0) 推荐(0) 编辑
CountDownLatch
摘要:CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 CountDownLatch和CyclicBarrier的区别(01) CountDownLatch的作用是允许1或N个线程等待其他线程完成执行;而CyclicBarrier则是允许 阅读全文
posted @ 2018-10-08 10:03 溪水静幽 阅读(197) 评论(0) 推荐(0) 编辑
PriorityQueue
摘要:PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。 优先队列:优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)。元素大小的评判可以通过元素本身的自然顺序(natural ordering),也可以通过构 阅读全文
posted @ 2018-09-27 21:42 溪水静幽 阅读(128) 评论(0) 推荐(0) 编辑
ArrayBlockingQueue
摘要:ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列,常用于生产者-消费者模式,能够容纳指定个数的元素,当队列满时不能再放新的元素,当队列为空时不能取出元素,此时相应的生产者或者消费者线程往往会挂起。本类是一种先进先出(FIFO)的队列结构,内部通过数组实现。 注意:ArrayB 阅读全文
posted @ 2018-09-26 20:12 溪水静幽 阅读(543) 评论(0) 推荐(0) 编辑
CopyOnWriteArrayList
摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现 阅读全文
posted @ 2018-09-25 16:01 溪水静幽 阅读(180) 评论(0) 推荐(0) 编辑
LinkedList
摘要:LinkedList 是线程不安全的,允许元素为null的双向链表。 其底层数据结构是链表,实现List, Deque, Cloneable, java.io.Serializable接口,实现了Deque,所以它也可以作为一个双端队列。随机访问元素速度较慢。 因其底层数据结构是链表,增删只需要移动 阅读全文
posted @ 2018-09-23 15:42 溪水静幽 阅读(114) 评论(0) 推荐(0) 编辑
ArrayList源码
摘要:概括 ArrayList 是一个动态数组,线程不安全的,允许元素为null,元素有序,底层数据结构是数组,实现List, RandomAccess, Cloneable, java.io.Serializable接口,其中RandomAccess代表其拥有随机快速访问的能力,ArrayList可以以 阅读全文
posted @ 2018-09-22 20:21 溪水静幽 阅读(113) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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