线程池框架

JDK版本:AdoptOpenJDK 11.0.10+91 基本概念j.u.c提供了一套完整的线程池框架,主要包括:Executor 接口 —— 执行器。ExecutorService 接口 —— 增强型执行器。ScheduledExecutorService 接口 —— 周期任务调度执行器。Executor(发音:一个在Q特儿)2 Executor 接口Executor 接口的目的是为了 解耦任务本身和任务的执行,只有一个execute(Runnable command) 方法.
摘要由CSDN通过智能技术生成

JDK版本:AdoptOpenJDK 11.0.10+9

1 基本概念

j.u.c 提供了一套完整的线程池框架,主要包括:

  • Executor 接口 —— 执行器。
  • ExecutorService 接口 —— 增强型执行器。
  • ScheduledExecutorService 接口 —— 周期任务调度执行器。

Executor(发音:一个在Q特儿

2 Executor 接口

Executor 接口的目的是为了 解耦任务本身和任务的执行,只有一个execute(Runnable command) 方法,执行实现 Runnable 接口的任务。

public interface Executor {
   

    void execute(Runnable command);
}

Executor 只是一个接口,根据其不同的实现类,可以有多种执行任务的方式。例如,同步执行、异步执行、延迟执行、周期执行等等。

3 ExecutorService 接口

为了对 Executor 提供的功能进行增强,j.u.c 提供了一个继承 Executor 的接口 ExecutorService 接口:

public interface ExecutorService extends Executor {
   
    ......   
}

ExecutorService 增强了对任务的控制,提供的方法很多,主要分为四类:

  1. 关闭执行器,终止任务执行;
  2. 获取执行器状态;
  3. 异步执行任务;
  4. 批处理任务;

3.1 关闭执行器

(1)

    void shutdown();

关闭执行器。

特点如下:

  • 已经提交给当前执行器的任务将会继续执行完毕,但是不再接受新任务;
  • 如果执行器已经关闭了,再次调用该方法没有任何影响。

(2)

    List<Runnable> shutdownNow();

立即关闭执行器。

特点如下:

  • 尝试停止所有正在执行的任务,无法保证能够停止成功;
  • 暂停处理已经提交的但是未执行的任务;
  • 返回从未开始执行的任务列表。

3.2 获取执行器状态

(1)

    boolean isShutdown();

查看执行器是否已经 关闭,返回 true 表示已经关闭。

(2)

    boolean isTerminated();

查看执行器是否已经 终止

当且仅当执行器已经关闭并且所有任务都已经执行完成,才返回 true

(3)

    boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;

调用该方法的线程将会被阻塞,直到执行器终止并返回 true 。如果超时或者被中断,调用线程也会被唤醒。

3.3 异步执行任务

(1)

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

提交并执行一个实现了 Callable 接口的任务,该任务的返回值可以通过 Future 对象返回。

调用 Futureget() 方法将会使当前线程阻塞,直到获取到返回值为止。

(2)

    <T> Future<T> submit(Runnable task, T result);

提交并执行一个实现了 Runnable 接口的任务,通过 Futureget() 方法获取返回的 指定结果,指定结果是通过入参 result 指定的。

(3)

    Future<?> submit(Runnable task);

提交并执行一个实现了 Runnable 接口的任务,通过 Futureget() 方法将会获取一个 null 值。

3.4 批处理任务

(1)

    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
            throws InterruptedException;

执行给定集合中的所有实现了 Callable 接口的任务,返回所有任务的 Future 对象。

该方法能够响应中断。

该方法为同步方法,必须等待所有任务执行完才返回。

(2)

    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
                                      long timeout, TimeUnit unit)
            throws InterruptedException;

执行给定集合中的所有实现了 Callable 接口的任务,返回所有任务的 Future 对象。

该方法能够响应中断。

该方法可指定超时时间。

该方法为同步方法,必须等待所有任务执行完才返回。

(3)

    <T> T invokeAny(Collection<? extends 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值