温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java中怎么利用多线程批量执行任务

发布时间:2021-06-21 15:28:25 来源:亿速云 阅读:1129 作者:Leah 栏目:大数据

这期内容当中小编将会给大家带来有关java中怎么利用多线程批量执行任务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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

public class TestThread {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        System.out.println("----程序开始运行----");
        Date beginTime = new Date();

        // 创建一个线程池,容量为3
        ExecutorService pool = Executors.newFixedThreadPool(3);
        List<Future<String>> list = new LinkedList<>();
        // 创建10个有返回值的任务
        for (int i = 0; i < 10; i++) {
            Callable c = new MyCallable(i + " ");
            // 执行任务并获取Future对象
            Future f = pool.submit(c);
            list.add(f);
        }
        // 关闭线程池:会在所有任务执行完成后关闭线程池,但并不会阻塞程序运行
        pool.shutdown();

        // 获取所有并发任务的运行结果
        for (Future<String> f : list) {
            System.out.println(">>>" + f.get());
        }

        System.out.println("----程序结束运行----,程序运行时间【" + (new Date().getTime() - beginTime.getTime()) + " 毫秒】");
    }
}

class MyCallable implements Callable<Object> {
    private String taskNum;

    MyCallable(String taskNum) {
        this.taskNum = taskNum;
    }

    public Object call() throws Exception {
        Date beginTime = new Date();
        System.out.println(">>>" + taskNum + "任务开始");
        Thread.sleep(new Random().nextInt(5000));
        System.out.println(">>>" + taskNum + "任务结束");
        return taskNum + "任务耗时:" + (new Date().getTime() - beginTime.getTime());
    }
}

上述就是小编为大家分享的java中怎么利用多线程批量执行任务了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI