java线程
zf_afox
这个作者很懒,什么都没留下…
展开
-
线程池是怎么重复利用线程的
当线程执行任务时会调用Worker对象的run方法 private final class Worker extends AbstractQueuedSynchronizer implements Runnable { Worker(Runnable firstTask) { setState(-1); // inhibit interrupts until runWorker原创 2021-05-09 10:28:15 · 133 阅读 · 0 评论 -
ThreadLocal原理
ThreadLocal 实例 通常是类中的私有静态final变量,常用于将状态与线程关联ThreadLocal 类 提供了 get/set 线程局部变量的实现,每个线程都可以通过 ThreadLocal 成员变量 get/set 自己的专属值。ThreadLocal能为每个 Thread线程 绑定一个专属值的奥秘就是:每个Thread对象都持有一个 ThreadLocalMap类型的成员变量,其key为ThreadLocal对象,value为绑定的值ThreadLocal部分源码publi原创 2021-05-07 17:35:29 · 156 阅读 · 0 评论 -
线程池 ThreadPoolExecutor 执行任务原理
1.调用线程池的execute方法public void execute(Runnable command) { ...... addWorker(command, true) ......}2.addWorker方法private boolean addWorker(Runnable firstTask, boolean core) { ...... w = new Worker(firstTask); final.原创 2021-05-07 11:11:29 · 111 阅读 · 0 评论 -
线程池拒绝策略
//以当前调用线程跑任务public static class CallerRunsPolicy implements RejectedExecutionHandler { public CallerRunsPolicy() { } public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { if (!e.isShutdown()) { r.run(); } .原创 2021-05-07 10:54:51 · 100 阅读 · 0 评论