时间:2021-05-19
一,描写叙述
在多线程下编程的时候。大家可能会遇到一种需求,就是我想在我开启的线程都结束时,同一时候获取每一个线程中返回的数据然后再做统一处理,在这种需求下,Future与Callable的组合就派上了非常大的用场。
也有人会说,我能够使用同步来完毕这个需求啊,普通情况下确实能够。可是在一种特殊情况下就不行了:
想象,你开启了多个线程同步计算一些数据,可是大家都知道,线程是会争用资源的,也就是说。你开启多个线程来同步计算数据时。事实上线程之间的计算顺序是不可空的,当然除非你非非常大周折去处理也不无可能。在这样的情况下。Future和Callable的组合就是不二之选了。
二,样例
这两个类的样例事实上非常easy,主要就看自己在实际运用中能不能找到他们的用武之地了。上代码:
package test; import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future; public class FetureCallableTest { private static ExecutorService service = Executors.newFixedThreadPool(100); private static int count = 1; public static void main(String[] args) throws InterruptedException, ExecutionException { int sum = 0; for(int i = 0; i < 100; i++) { Future<Integer> future = service.submit(new Callable<Integer>(){ @Override public Integer call() throws Exception { System.out.println(Thread.currentThread().getName()); return ++count; } }); int f = future.get(); sum += f; System.out.println("future is " + f); } System.out.println("sum is " + sum); service.shutdownNow(); } }声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java创建线程主要有三种方式:继承Thread类创建线程、实现Runnable接口创建线程和实现Callable和Future创建线程。继承Thread类pu
Callable和Future接口Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任
本文实例讲述了Java使用Callable和Future创建线程操作。分享给大家供大家参考,具体如下:一点睛从Java5开始,Java提供了Callable接口
本文主要探究的是java并发编程callable与future的使用,分享了相关实例代码,具体介绍如下。我们都知道实现多线程有2种方式,一种是继承Thread,
java有以下四种创建多线程的方式1:继承Thread类创建线程2:实现Runnable接口创建线程3:使用Callable和FutureTask创建线程4:使