Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分 ...
分类:
编程语言 时间:
2017-04-17 10:11:29
阅读次数:
232
本节介绍CompletionService,它方便了对于多个异步任务结果的处理 ...
分类:
其他好文 时间:
2017-04-14 09:41:04
阅读次数:
222
Callable这种任务可以返回结果,返回的结果可以由Future去拿 >Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的。 >CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Futu ...
分类:
编程语言 时间:
2016-11-07 07:42:23
阅读次数:
156
使用场景:如果需要拿到线程的结果,或者在线程完成后做其他操作,可以使用Callable 和 Futrue 1.定义一个线程池,向线程池中提交单个callable任务 2.CompletionService 用于提交一组callable任务,并获取每一个任务的结果 ...
分类:
编程语言 时间:
2016-11-03 23:21:45
阅读次数:
324
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分 ...
分类:
编程语言 时间:
2016-08-17 17:55:55
阅读次数:
212
目录: 1.volatile变量 2.Java并发编程学习 3.CountDownLatch用法 4.CyclicBarrier使用 5.BlockingQueue使用 6.任务执行器Executor7.CompletionService使用8.ConcurrentHashMap使用9.Lock使用 ...
分类:
编程语言 时间:
2016-07-19 18:46:41
阅读次数:
219
在上一文章中,笔者介绍了线程池及其内部的原理。今天主要讲的也是和线程相关的内容。一般情况下,使用Runnable接口、Thread实现的线程我们都是无法返回结果的。但是如果对一些场合需要线程返回的结果。就要使用用Callable、Future、FutureTask、CompletionService这几个类。Callable只能在ExecutorService的线程池中跑,但有返回结果,也可以通过...
分类:
编程语言 时间:
2016-06-12 10:52:39
阅读次数:
464
我们现在在Java中使用多线程通常不会直接用Thread对象了,而是会用到java.util.concurrent包下的ExecutorService类来初始化一个线程池供我们使用。 当我们使用ExecutorService来做多线程处理时,习惯自己维护一个list保存submit的callable ...
分类:
其他好文 时间:
2016-06-01 12:54:54
阅读次数:
125
当向Executor提交批处理任务时,并且希望在它们完成后获得结果,如果用FutureTask,你可以循环获取task,并用 future.get()去获取结果,但是如果这个task没有完成,你就得阻塞在这里,这个实效性不高,其实在很多场合,其实你拿第一个任务结果时,此 时结果并没有生成并阻塞,其实在阻塞在第一个任务时,第二个task的任务已经早就完成了,显然这种情况用future task不合适...
分类:
其他好文 时间:
2016-05-30 15:15:51
阅读次数:
108
如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果,怎么办呢? 为此你可以保存与每个任务相关联的Future,然后不断地调用 timeout为零的get,来检验Future是否完成。这样做固然可以,但却相当乏味。幸运的是,还有一个更好的方法:完成服务 (Completion ...
分类:
编程语言 时间:
2016-05-05 22:32:39
阅读次数:
346