如何提交一个任务到线程池执行?

【饿了么、美团】外卖红包领取地址 >> 能省一点是一点

如何创建线程池之ThreadPoolExecutor构造方法参数解析
如何创建线程池之Executors类的使用

提交任务到线程池执行有以下几种办法:

使用execute方法,无返回值

ExecutorService executor = Executors.newCachedThreadPool();
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("do something");
    }
};
executor.execute(runnable);

入参为常见的Runnable类型

使用submit方法,有返回值

submit有3个重载函数,最常用的是下面这个

<T> Future<T> submit(Callable<T> task);

入参为Callable类型,可以通过返回的Future对象获取call方法的执行结果。

ExecutorService executor = Executors.newCachedThreadPool();
Callable<String> callable = new Callable<String>() {
    @Override
    public String call() throws Exception {
        System.out.println("do something");
        return "finished";
    }
};
Future<String> submit = executor.submit(callable);
//阻塞主线程,等待任务执行完毕,返回值为call()的返回值
System.out.println(submit.get());

其余2个我个人感觉没啥用,了解一下即可。

Future<?> submit(Runnable task);

虽然返回了一个Future对象,但是这个对象没有返回值,作用只是可以通过get方法阻塞主线程等待任务执行完毕(好像没啥用)

ExecutorService executor = Executors.newCachedThreadPool();
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("do something");
    }
};
Future<?> submit = executor.submit(runnable);
//阻塞主线程,等待任务执行完毕,返回值为null
System.out.println(submit.get());
<T> Future<T> submit(Runnable task, T result);

与上一个方法的区别是,返回值固定为result,可以自定义返回值(一样好像没啥用)

ExecutorService executor = Executors.newCachedThreadPool();
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("do something");
    }
};
Future<String> submit = executor.submit(runnable, "finished");
//阻塞主线程,等待任务执行完毕,返回值为finished
System.out.println(submit.get());

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍

(扫码,视频讲解)美好生活典藏书系:一看就想吃的中式面食(精装)家用菜谱书大全主食面点烹饪新手入门初学书早餐学习教材网 家常菜谱
¥14.06
顾影 苹果14pro手机壳iPhone14promax保护套镜头全包女款可爱防摔高档皮质软壳 【狮子腕带+斜跨挂绳】高端皮纹软壳 iPhone13 pro
¥36.00
曼秀雷敦(Mentholatum) 什果冰润唇膏补水保湿滋润防干裂男女学生儿童无色口油去死皮淡化唇纹 青提+葡萄
¥20.00
名师课堂同步训练100分一年级语文上册人教版2021版教材配套单元同步测试卷1年级语文专项训练习题册
¥20.79
星爸 缠绕膜 30cm*300m净重1.6kg/卷 单卷 PE工业打包膜 快递托盘拉伸膜 塑料分切膜
¥28.20
王后雄学案教材完全解读 高中化学选修3 物质结构与性质 2022版高二化学教辅资料(不适用于新教材地区)
¥30.33
毕亚兹 华为超级快充 支持P50/mate50/30/20pro荣耀30x10nova6/7/8pro闪充充电器+数据线套装 USB69
¥49.00
晨光彩色长尾夹小号15mm燕尾夹小夹子文具蝴蝶夹超大号票据夹办公用品凤尾夹中号 彩色25mm(筒装)48个装*2盒
¥23.60