JAVA多线程Callable应用

package concurrent;

import java.util.Random;
import java.util.concurrent.*;

/**
 * Auth: zhouhongliang
 * Date:2019/8/1
 * 分配多个线程共同执行某个任务,等待子线程都结束,主线程才结束
 */
public class CallableDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executorService = Executors.newFixedThreadPool(3);
        CountDownLatch countDownLatch = new CountDownLatch(3);
        Future<Integer> future1 = executorService.submit(new CallableTask(countDownLatch));
        Future<Integer> future2 = executorService.submit(new CallableTask(countDownLatch));
        Future<Integer> future3 = executorService.submit(new CallableTask(countDownLatch));
        System.out.println(future1.get());
        System.out.println(future2.get());
        System.out.println(future3.get());
        countDownLatch.await();
        executorService.shutdown();
    }
}
class CallableTask implements Callable<Integer>{
    private CountDownLatch countDownLatch;

    public CallableTask(CountDownLatch countDownLatch) {
        this.countDownLatch = countDownLatch;
    }

    @Override
    public Integer call() throws Exception {
        int count = 0;
        final int random = new Random().nextInt(1000);
        for (int i=0;i<random;i++){
            count ++;
        }
        countDownLatch.countDown();
        return count;
    }
}

当前题目:JAVA多线程Callable应用
本文地址:https://www.cdcxhl.com/article46/gjpchg.html

成都网站建设公司_创新互联,为您提供全网营销推广网站排名定制网站网站制作企业建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化