JDK1.5 获取线程执行结果 Callable Future
2017-03-27 11:44
369 查看
import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; /** * Callable Future (类是有回调的 线程池任务) 可以获取 线程执行后的 结果(无序的) */ public class CallableAndFuture { /** * @param args * @throws ExecutionException * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException,Exception { ExecutorService threadPool=Executors.newSingleThreadExecutor(); // 提交当个任务 然后获取等待结果 Future<String> future=threadPool.submit(new Callable<String>() { @Override public String call() throws Exception { // TODO Auto-generated method stub Thread.sleep(2000); return "Hello: "+Thread.currentThread().getName(); } }); System.out.println("等待结果中..."); //什么时候有结果后 再获取结果 System.out.println("结果为:"+future.get()); //等待 1秒后 获取结果 没有取到结果就算了 System.out.println("结果为:"+future.get(1, TimeUnit.SECONDS)); threadPool.shutdown(); //批量提交任务 然后 循环获取 执行后的结果 ExecutorService threadPool1=Executors.newFixedThreadPool(10); CompletionService<Integer> completionService=new ExecutorCompletionService<Integer>(threadPool1); for (int i = 0; i < 10; i++) { final int seq=i; completionService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { // TODO Auto-generated method stub Thread.sleep(new Random().nextInt(5000)); return seq; } }); } System.out.println("2等待结果中..."); for (int i = 0; i < 10; i++) { System.out.println(completionService.take().get()); } threadPool1.shutdown(); } }
相关文章推荐
- java并发:获取线程执行结果(Callable、Future、FutureTask)
- 多线程-从Future对象中获取线程处理Callable方法的结果
- 06____线程返回执行结果(Callable和Future)
- Java中使用Future获取线程异步执行结果的使用
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- java 使用Callable和Future返回线程执行的结果
- 使用Callable和Future两个类,来获得线程执行后的结果
- Callable接口实现线程执行结果的返回
- [笔记][Java7并发编程实战手册]4.4 在执行器中执行任务并返回结果Callable、Future
- Callable拿到线程执行结果
- JAVA 并发编程-返回执行结果(Callable和Future)(九)
- java多线程获取结果 Callable和Future
- 获取线程执行结果
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
- JAVA 并发编程-返回执行结果(Callable和Future)(九)
- Callable与Future的应用得到线程的返回结果(十)
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
- Callable+FutureTask实现多线程并获取结果
- 【多线程】——Runnable如何获取线程执行结果?
- Java并发编程的艺术(九)——批量获取多条线程的执行结果