如何等一个线程执行完执行另外一个线程,借助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
- 如何等一个线程执行完执行另外一个线程,借助FutureTask类
- 控制台创建两个线程,等待一个线程的结束,执行另外一线程
- 如何判断一个线程是否正在执行
- java 一个线程执行加,一个线程执行减
- java 一个线程执行减,一个线程执行加
- 一个定时执行的线程
- 【Win32多线程】如何初始化一个新线程,停止一个执行中的线程,调整线程优先权?
- 用一个线程控制一个事务执行
- java中一个线程等待另一个线程执行完后再执行
- 第九天 设计一个方法,执行一次,一个线程对j加1,另外一个对j减一
- 在一个方法执行完后开启一个线程
- Monitor线程操作(当一个线程中处于等待状态时,另外一个线程来解锁它的等待状态继续执行下去)
- 线程执行的顺序 等线程执行完再执行下一个线程
- 将进程变成一个线程执行代码
- java 关闭一个正在执行的线程
- java 关闭一个正在执行的线程
- Qt 创建一个线程执行某个函数
- dialog 被另外一个dialog覆盖,生命周期如何执行
- First Steps to Scala
- 在github里创建一个新项目,并且在intellj idea中使用github来做版本控制
- 使用 Python 创建你自己的 Shell(下)
- #233 – DrawingVisual类的一个例子
- 387.First Unique Character in a String
- 如何等一个线程执行完执行另外一个线程,借助FutureTask类
- Linux下CodeBlocks远程调试ARM程序环境搭建
- mysql 行转列
- perf4j
- Inno setup 常用修改技巧
- C++中重定义、重写、重载的区别以及隐藏与覆盖的访问
- Android——Dagger2依赖注入框架
- iOS中GCD的使用小结
- 第二章:数据库设计和ER模型