java多线程Future和Callable类示例分享

网友投稿 198 2023-07-23


java多线程Future和Callable类示例分享

一,描写叙述

​在多线程下编程的时候。大家可能会遇到一种需求,就是我想在我开启的线程都结束时,同一时候获取每一个线程中返回的数据然后再做统一处理,在这种需求下,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.cHeEOIuwjoncurrent.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 future = service.submit(new Callable(){

@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();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java的Jackson库的使用及其树模型的入门学习教程
下一篇:WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~