![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
BraveHeart!
freedom!
展开
-
ThreadPoolExecutor线程池如何实现计时回收空闲线程
个人理解: runWorker()方法中,while 循环调用 getTask()方法, getTask()方法 for(;;)中,首先判断是否shutdown(),或者worker count > maximumPollSize,需要回收线程,判断timeOut == true,然后return null,跳出上面的while循环,执行processWorkerExit,执行workers.remove(worker),如果当前的工作线程数已经等于coreWorkersCount了,就调用block原创 2020-10-09 11:27:35 · 707 阅读 · 0 评论 -
在使用线程池等会缓存线程的组件情况下传递ThreadLocal
@TO在使用线程池等会缓存线程的组件情况下传递ThreadLocalC 需求场景 在ThreadLocal的需求场景即是TTL的潜在需求场景,如果你的业务需要『在使用线程池等会缓存线程的组件情况下传递ThreadLocal』则是TTL目标场景。 下面是几个典型场景例子。 分布式跟踪系统 应用容器或上层框架跨应用代码给下层SDK传递信息 日志收集记录系统上下文 各个场景的展开说明参见子文档 需求场景。 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器转载 2020-09-14 10:16:59 · 111 阅读 · 0 评论 -
Disruptor 极速体验
已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和“闪电”一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想起了闪电般的 Disruptor ,这必有它的用武之地,于是进行了一番探查,将成果和体会记录在案。 一、什么是 Disruptor 从功能上来看...转载 2019-04-15 11:27:17 · 110 阅读 · 0 评论 -
synchronized关键字
用法 1.指定加锁对象 2.直接作用实例方法 this synchronized 方法 3.直接作用静态方法 相当于当前类的锁 public static synchronized void methodA(){ } /** * 调试日志 * * @param clazz * @return */ public static s...原创 2019-07-20 10:16:44 · 88 阅读 · 0 评论 -
synchronized的底层实现原理
常见三种使用方法: 1)普通同步方法,锁是当前实例; 2)静态同步方法,锁是当前类的Class实例,Class数据存在永久代中,是该类的一个全局锁; 3)对于同步代码块,锁是synchronized括号里配置的对象。 Java中的每个对象都可以作为锁。当一个线程访问同步代码块时,需要首先获取锁,退出代码块或抛出异常时必须释放锁 “锁”到底是个什么东东? 首先通过源代码和反汇编代码研...转载 2019-08-21 16:37:13 · 952 阅读 · 0 评论