如何等一个线程执行完执行另外一个线程,借助FutureTask类

来源:互联网 发布:php 那个版本速度快 编辑:程序博客网 时间:2024/06/03 18:18
package thread;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.FutureTask;public class CallableAndFuture {public static void main(String[] args) throws InterruptedException, ExecutionException {List<FutureTask<Integer>> taskList=method1();for(FutureTask<Integer> task:taskList){task.get();}System.out.println();System.out.println("*****任务一******全部执行结束****");System.out.println();method2();System.out.println();System.out.println("………………任务二…………是否执行结束?????,一般情况还没有哦!");System.out.println();}public static List<FutureTask<Integer>>  method1(){ExecutorService executor = Executors.newCachedThreadPool();List<FutureTask<Integer>> taskList=new ArrayList<FutureTask<Integer>>();for(int i=0;i<5;i++){TheadTask1 task = new TheadTask1();FutureTask<Integer> futureTask = new FutureTask<Integer>(task);executor.submit(futureTask);taskList.add(futureTask);}return taskList;}public static List<FutureTask<Integer>>  method2(){ExecutorService executor = Executors.newCachedThreadPool();List<FutureTask<Integer>> taskList=new ArrayList<FutureTask<Integer>>();for(int i=0;i<5;i++){TheadTask2 task = new TheadTask2();FutureTask<Integer> futureTask = new FutureTask<Integer>(task);executor.submit(futureTask);taskList.add(futureTask);}return taskList;}}class TheadTask1 implements Callable<Integer> {@Overridepublic Integer call() throws Exception {System.out.println("Task11111111111111111111111111111开始工作");        Thread.sleep((long) (Math.random() * 6000));System.out.println("Task11111111111111111111111111111----结束工作"+Thread.currentThread().getName());return 1;}}class TheadTask2 implements Callable<Integer> {@Overridepublic Integer call() throws Exception {System.out.println("Task22222222222222222222222222222开始工作");        Thread.sleep((long) (Math.random() * 6000));System.out.println("Task22222222222222222222222222222----结束工作"+Thread.currentThread().getName());return 1;}}

0 0
原创粉丝点击