Java中Executor接口用法总结
Executor接口的介绍
Executor
接口是Java中线程池的核心接口,通常我们可以使用Executors
类中的一些静态方法来创建Executor
的实例,例如:newFixedThreadPool
、newCachedThreadPool
、newSingleThreadExecutor
、newScheduledThreadPool
等方法。
Executor
接口的主要职责是定义了一个执行线程任务的方法:execute(Runnable command)
。
Executor接口的实现类
ThreadPoolExecutor
ThreadPoolExecutor
是Executor
接口的一个实现类,通常我们使用它来创建线程池。
使用ThreadPoolExecutor
创建线程池时,我们需要为线程池指定以下几个参数:
- corePoolSize:核心线程池大小,即线程池中的线程数量,也就是线程池中最小的线程数量。
- maximumPoolSize:线程池中允许的最大线程数量。
- keepAliveTime:非核心线程的空闲时间,即当线程池中的线程数量大于核心线程池大小时,多余的空闲线程能够保持的最长时间。
- unit:非核心线程的空闲时间的时间单位。
- workQueue:线程池中的任务队列,即用来存放还未执行的任务的队列。
- threadFactory:新建线程的工厂类,用来创建线程。
- handler:线程池中线程的饱和策略,即当线程池中的线程数量已经达到最大值之后采取的策略。
示例代码:
ExecutorService executorService = new ThreadPoolExecutor(10, 20, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
executorService.execute(() -> {
// 线程任务
});
ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor
也是Executor
接口的一个实现类,用来创建一个定时线程池,可以用来执行定时任务。
示例代码:
ScheduledExecutorService scheduledExecutorService = new ScheduledThreadPoolExecutor(2);
scheduledExecutorService.schedule(() -> {
// 延迟1秒执行该线程任务
}, 1, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> {
// 每隔1秒钟执行一次该线程任务
}, 0, 1, TimeUnit.SECONDS);
总结
Executor
接口是Java中线程池的核心接口,常用的实现类有ThreadPoolExecutor
和ScheduledThreadPoolExecutor
。使用前,需要明确线程池的核心线程数、最大线程数、任务队列等参数,以及线程的饱和策略。在线程池中执行任务时,只需要使用execute
方法即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中Executor接口用法总结 - Python技术站