多线程执行任务等待所有任务执行完毕

来源:互联网 发布:java工程师薪资待遇 编辑:程序博客网 时间:2024/04/30 01:30
@Test    public void testMultiThread(){        try {            final CountDownLatch countDownLatch = new CountDownLatch(2);//计数器            ExecutorService executorService = Executors.newCachedThreadPool();            Future<Boolean> work1 =  executorService.submit(new Callable<Boolean>() {                @Override                public Boolean call() throws Exception {                    System.out.println("线程1开始执行..........");                    Thread.sleep(5000);                    System.out.println("线程1执行完了............");                    countDownLatch.countDown();                    return true;                }            });            Future<Boolean> work2 = executorService.submit(new Callable<Boolean>() {                @Override                public Boolean call() throws Exception {                    System.out.println("线程2开始执行..........");                    Thread.sleep(5000);                    System.out.println("线程2执行完了............");                    countDownLatch.countDown();                    return true;                }            });            Boolean work1Flag =  work1.get();//线程1返回值            Boolean work2Flag = work2.get();//线程2返回值            System.out.println("运行结果:线程1=" + work1Flag + "线程2=" + work2Flag);            countDownLatch.await();            System.out.println("执行结束");        } catch (InterruptedException e) {            e.printStackTrace();        } catch (ExecutionException e) {            e.printStackTrace();        }    }


执行结果如下:

线程1开始执行..........
线程2开始执行..........
线程2执行完了............
线程1执行完了............
运行结果:线程1=true线程2=true
执行结束

0 0
原创粉丝点击