java多线程Future和Callable类示例分享
程序员文章站
2024-03-08 10:07:40
一,描写叙述
在多线程下编程的时候。大家可能会遇到一种需求,就是我想在我开启的线程都结束时,同一时候获取每一个线程中返...
一,描写叙述
在多线程下编程的时候。大家可能会遇到一种需求,就是我想在我开启的线程都结束时,同一时候获取每一个线程中返回的数据然后再做统一处理,在这种需求下,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(); } }
上一篇: asp.net ListView交替背景颜色实现代码
下一篇: Java定时器Timer简述
推荐阅读
-
java多线程Future和Callable类示例分享
-
java自定义任务类定时执行任务示例 callable和future接口使用方法
-
java自定义任务类定时执行任务示例 callable和future接口使用方法
-
java多线程编程同步器Future和FutureTask解析及代码示例
-
Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解
-
Java多线程 Callable、Future 和FutureTask
-
java多线程之:通过 Callable 和 Future 创建线程
-
java多线程之Callable和Future
-
Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)
-
Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解