Java并发 二 ExecutorService

本文详细介绍ExecutorService在Java并发编程中的应用。从创建Runnable任务到管理线程池,再到任务提交和执行控制,全面剖析ExecutorService的工作原理及其实现异步处理的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ExecutorService是异步处理的完整解决方案。它管理内存中队列并根据线程可用性计划提交的任务。

要使用ExecutorService,我们需要创建一个Runnable类。

public class Task implements Runnable {
    @Override
    public void run() {
        // task details
    }
}

现在我们可以创建ExecutorService实例并分配此任务。在创建时,我们需要指定线程池大小。

ExecutorService executor = Executors.newFixedThreadPool(10);

如果我们要创建单线程ExecutorService实例,我们可以使用newSingleThreadExecutor(ThreadFactory threadFactory)来创建实例。

创建执行程序后,我们可以使用它来提交任务。

public void execute() { 
    executor.submit(new Task()); 
}

我们还可以在提交任务时创建Runnable实例。

executor.submit(() -> {
    new Task();
});

它还带有两个开箱即用的执行终止方法。第一个是shutdown() ; 它等待所有提交的任务完成执行。另一种方法是执行shutdownNow() whic ħ立即终止所有未决/执行的任务。

还有另一种方法awaitTermination(长超时,TimeUnit单元)强制阻塞,直到所有任务在触发关闭事件或执行超时发生后完成执行,或者执行线程本身被中断,

try {
    executor.awaitTermination( 20l, TimeUnit.NANOSECONDS );
} catch (InterruptedException e) {
    e.printStackTrace();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值