- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 多线程之任务时限
有的时候我们希望在一定时间内获取这个任务的结果,如果没有获取到就结束这个任务。这个时候需要对任务的时间做一个限制。Future.get(long timeout, TimeUnit unit)future.get方法提供了这样的参数,当结果可用时,它将立即返回,如果在指定时限内没有计算出结果,那么将抛出TimeoutException。当任务超时后,future也提供了一定的方法来取消任务...
2018-12-12 14:57:03 584
原创 多线程之CompletionService获取多个任务结果并进行汇总
上一章末尾也说道,这个接口,更好地实现了任务提交任务获取这种程序,更加方便。例子如下:package com.cc.mutilineExample.callableAndFuture.test5_completion_future;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;...
2018-12-10 11:44:52 2951
原创 多线程之Callable/Future获取多个任务结果并进行汇总
许多不能立即获得计算结果的延迟计算,都可以使用Callable/Future这种形式。例如数据库查询等。Callable是对任务的一种抽象,通过在Executor中包含封装的Callable任务来执行,将结果封装为Future。Future提供了相应的方法判断是否已经完成,以及获取任务的结果(future.get())等方便进行操作。Get方法的行为取决于任务的状态(尚未开始、正在运行、已完成)...
2018-12-10 11:42:27 9284 2
原创 多线程之Barrier栅栏获取多个任务结果并进行汇总
利用直接在一个线程中求和是效率非常低的,我们通过栅栏,先将这个问题拆分成一系列相互独立的子问题,通过栅栏后,将子问题的问题汇集起来,进行全部的求解。CyclicBarrier是一个很好的实现,它的构造方法中有一个Runnable参数,这个是最后进行汇总的方法,比如我们最后将计算结果求和,这里就是求和的执行。await()方法利用栅栏特性,等待所有线程求完元素之和再计算平均值。书上具体的介绍...
2018-12-10 11:32:42 886
原创 多线程之线程池方式--练习生产者消费者模式
虽然Executor是个简单的接口,但它却为灵活且强大的异步任务执行框架提供了基础,该框架能支持多种不同类型的任务执行策略。它提供了一种标准的方法将任务的提交过程与执行过程解耦开来,并用Runnable来表示任务。Executor基于生产者-消费者模式,提交任务的操作相当于生产者(生成待完成的工作单元),执行任务的线程则相当于消费者(执行完这些工作单元)。如果要在程序中实现一个生产者-消费者的设...
2018-12-05 16:25:08 736
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人