Java并发编程-Executor框架

本文介绍了Java中Executor框架的基本概念及其使用方法。包括不同类型的线程池如fixed、cached、single和scheduled线程池的特点及应用场景。还讨论了ExecutorService的生命周期管理,以及如何通过submit方法提交可返回结果的任务。

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

1、Executor 框架:异步任务执行框架。提供了对生命周期的支持,以及统计信息收集,应用程序管理和性能监视等机制。
·基于生产者-消费者模式。
·将任务提交过程与任务执行过程解耦,并且用Runnable来表示任务
2、线程池
·newFixedThreadPool:创建一个固定长度的线程池。
·newCachedThreadPool:创建一个可缓存的线程池。
·newSingleThreadPool:是一个单线程的线程池,按照任务在队列中的顺序来串行执行[FIFO,LIFO,优先级]等。
·newScheduledThreadPool:创建一个固定长度的线程池,并且以定时或者延时的方式执行任务。
3、Executor生命周期
·ExecutorService的生命周期有3种状态:运行,关闭,已终止。
·ExecutorService创建时就处于运行状态。
·shutdown方法将执行平缓的关闭过程:不接受新的任务,同时等待已提交的任务执行完成,保护还未开始执行的任务
4、Executor类只提供线程池的功能,并不提供生命周期监控的功能。
ExecutorService类不仅提供了线程池,而且具有生命周期监控等功能。
5、Executor.execute(Runnable command)
Future<T> future = ExecutorService.submit(Callable<T> task)
List<Future<T>> list = ExecutorService.invokeAll(Collection<Callable<T>> tasks, timeout, unit)


6、应用:


import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class TaskExecution {
private static final ExecutorService exec = Executors.newFixedThreadPool(4);

public static void main(String[] args) {

Callable<String> task = new Callable<String>() {

@Override
public String call() throws Exception {
Thread.sleep(1000);
return "success";
}

};
Future<String> future= exec.submit(task);

// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
System.out.println("isTerminate = "+exec.isTerminated());

try {
System.out.println("future.get = "+future.get(800,TimeUnit.NANOSECONDS));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
exec.shutdown();
} catch (ExecutionException e) {

e.printStackTrace();
exec.shutdown();
} catch (TimeoutException e) {
e.printStackTrace();
future.cancel(true);
exec.shutdown();
}

System.out.println("------------");
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值