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