• 工作单元: RunnableCallable
  • 执行机制: Executor

1. 工厂类

工厂类 Executors 创建以下三种 ThreadPoolExecutor

  1. SingleThreadExecutor :创建使用单个线程的线程池,保证顺序地执行各个任务。
  2. FixedThreadPool :创建使用固定线程数量的线程池,适用于负载比较重、资源较为有限的服务器。
  3. CachedThreadPool:创建大小无界的线程池,适用于有大量短期异步的程序或负载较轻的服务器。

工厂类 Executors 创建以下两种 ScheduledThreadPoolExecutor:

  1. ScheduledThreadPoolExecutor :包含多个线程,适用于多后台线程执行周期任务。
  2. SingleThreadScheduledExecutor :只包含一个线程,适用于单后台线程执行周期任务。

2. Future接口

该接口用于获得异步计算的结果:

  1. <T> Future<T> submit(Callable<T> task)
  2. <T> Future<T> submit(Runnable task, T result)
  3. Future<?> submit(Runnable task)

使用工厂类 Executors 可以把一个 Runnable 包装为一个 Callable ,但是其实并不能简单无侵入地实现获得返回值的操作(仅能得到null,除非在 run() 中进行修改操作),仅适用于“当将需要Callable的方法应用于其他无结果的操作时,这个方法会很有用”。

  1. public static <T> Callable<T> callable(Runnable task, T task)