java Callable和Future并发调用,并且返回结果小例子

来源:互联网 发布:时时彩源码大富豪 编辑:程序博客网 时间:2024/05/17 01:49
线程类:/** * 类名称:CallableTest.java * 类描述: * 作    者:why * 时    间:2016年11月7日 */public class CallableTest implements Callable<String> {//接收传来的值private String str;public CallableTest(String str){super();this.str = str;}@Overridepublic String call() throws Exception {//要执行的耗时操作,为了体验效果,没调用一次,休眠1000msThread.sleep(1000);return str;}}调用类:/** * 类名称:RunTest.java * 类描述: * 作    者:why * 时    间:2016年11月7日 */public class RunTest {public static void main(String[] args) {//创建线程池ExecutorService ex=Executors.newCachedThreadPool();List<CallableTest> taskList = new ArrayList<CallableTest>();long now=System.currentTimeMillis();taskList.add(new CallableTest("1"));taskList.add(new CallableTest("2"));taskList.add(new CallableTest("3"));taskList.add(new CallableTest("4"));try {//调用线程,并且接收线程返回的结果List<Future<String>> as =ex.invokeAll(taskList);for(Future<String> f:as){//打印返回结果System.out.println(f.get());}} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}System.out.println((System.currentTimeMillis()-now));}}输出结果:12341003(耗时)正常情况下,执行4次所用时间应给是4000ms,而并发调用,用时1003ms。

5 0
原创粉丝点击