-
All are from Java Concurrent Package
收藏分享读Java Concurrent部分源码的心得
最近更新文章
ThreadPoolExecutor 工作线程调度和回收
ThreadPoolExecutor对任务的提交和异步执行已分析完毕,现在要补充一些关于它对线程池的管理,也就是对其工作线程的调度和回收.
还记得上一篇“ThreadPoolExecutor
execute 方法分析”最后一个关于任务异步执行的流程图,虽然分支庞杂,但只有两个条逻辑路径会增加工作线程加入到线程池:一是当前线程池的大小<核心线程池大小(即p ...
ThreadPoolExecutor execute 方法分析
分析完AbstractExecutorService异步任务提交之后,一直留着一个问题:就是任务提交之后的最终执行方法execute(Runnable)始终没有细究,只知道它会在将来某个时刻去执行任务,也就是所谓的异步执行。 现在可以揭开异步执行方法executor(Runnable command)的真面目了,回到线程池执行器ThreadPoolExecutor,乍看这个方法,蛮精干的 ...
AbstractExecutorService任务提交<三>
最后来看两个invokeAny方法,这个方法和invokeAll的区别在于,invokeAll会阻塞直到所有任务执行完(完成 or 取消 or异常)才会返回(返回的是所有任务的结 ...
AbstractExecutorService任务提交<二>
submit方法分析完毕,接着看两个invokeAll方法,先看第一个:
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException {
...
AbstractExecutorService任务提交<一>
现在可以来记录AbstractExecutorService的异步任务提交了,单刀直入吧,先看三个submit方法提交单个任务:
public Future<?> submit(Runnable task) {
if (task == null) throw new NullPointerException();
RunnableF ...
ThreadPoolExecutor 分析之类基础架构
既然最终任务都是由execute(Runnable)方法执行,就直接来看该方法实现的所在类。
首当其冲肯定是类ThreadPoolExecutor了,相信他是java concurrent包中用的最多的一个
线程池执行器,包括spring中ThreadPoolTaskExecutor也是利用它来执行任务的。从类的
“家谱”来看,ThreadPoolExecutor直接继承自A ...
First glimpse at Java Concurrent from Executors to FutureTask
最近刚刚写完一个多线程的模块,感叹java concurrent强大的同时,整理了下近一周学习,打算大概记录下,
主要是读了部分concurrent包的代码. 有 ...