线程池多线程处理多任务,适用按顺序输出结果

2021-04-01 12:26

阅读:465

标签:pack   并发   BMI   term   shu   str   out   完成   string   

package com.test;

import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.*;

public class ThreadPoolExecutorTest2 {
    public static void main(String[] args)  throws InterruptedException, ExecutionException{
        ThreadPoolExecutorTest2 threadPoolExecutorTest2 = new ThreadPoolExecutorTest2();
        threadPoolExecutorTest2.doThing();
    }

    public void doThing() throws InterruptedException, ExecutionException {
        /**
         * 创建线程池,并发量最大为5
         * LinkedBlockingDeque,表示执行任务或者放入队列
         */
        ThreadPoolExecutor tpe = new ThreadPoolExecutor(5, 10, 0,
                TimeUnit.SECONDS, new LinkedBlockingDeque(),
                new ThreadPoolExecutor.CallerRunsPolicy());

        //存储线程的返回值
        List> results = new LinkedList>();

        for (int i = 0; i  result = tpe.submit(task);
            results.add(result);

        }

        //此函数表示不再接收新任务,
        //如果不调用,awaitTermination将一直阻塞
        tpe.shutdown();
        //1小时,模拟等待
        System.out.println(tpe.awaitTermination(1, TimeUnit.HOURS));

        //输出结果
        for (int i = 0; i 

 

运行结果:


放入线程池:0
放入线程池:1
放入线程池:2
放入线程池:3
放入线程池:4
放入线程池:5
放入线程池:6
放入线程池:7
放入线程池:8
放入线程池:9
完成 0
完成 1
完成 3
完成 2
完成 4
完成 5
完成 6
完成 9
完成 7
完成 8
true
返回值0
返回值1
返回值2
返回值3
返回值4
返回值5
返回值6
返回值7
返回值8
返回值9

线程池多线程处理多任务,适用按顺序输出结果

标签:pack   并发   BMI   term   shu   str   out   完成   string   

原文地址:https://www.cnblogs.com/chuyuan/p/13539596.html


评论


亲,登录后才可以留言!