import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; public class FutureTest { public static void main(String[] args)throws Exception{ ExecutorService executorService = Executors.newFixedThreadPool(10); List<FutureTask<Integer>> result = new ArrayList<>(); System.out.println("begin"); for(int i=0;i<9;i++){ FutureTask<Integer> taskbei = new FutureTask<>(new Tes(i)); result.add(taskbei); executorService.submit(taskbei); }
executorService.shutdown();//关闭线程池for(FutureTask<Integer> future:result){ System.out.println(future.get());//调用 get()方法会阻塞线程的执行 直至线程返回结果 } System.out.println("over"); } } class Tes implements Callable<Integer>{ private int num; Tes(int i){ this.num=i; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } @Override public Integer call() throws Exception { Thread.sleep(1000); return 2*num; } }
带返回值的多线程 Callable
最新推荐文章于 2022-07-06 06:00:00 发布