- 工作单元:
Runnable
和Callable
。 - 执行机制:
Executor
。
1. 工厂类
工厂类 Executors
创建以下三种 ThreadPoolExecutor
:
SingleThreadExecutor
:创建使用单个线程的线程池,保证顺序地执行各个任务。FixedThreadPool
:创建使用固定线程数量的线程池,适用于负载比较重、资源较为有限的服务器。CachedThreadPool
:创建大小无界的线程池,适用于有大量短期异步的程序或负载较轻的服务器。
工厂类 Executors
创建以下两种 ScheduledThreadPoolExecutor:
ScheduledThreadPoolExecutor
:包含多个线程,适用于多后台线程执行周期任务。SingleThreadScheduledExecutor
:只包含一个线程,适用于单后台线程执行周期任务。
2. Future接口
该接口用于获得异步计算的结果:
<T> Future<T> submit(Callable<T> task)
<T> Future<T> submit(Runnable task, T result)
Future<?> submit(Runnable task)
使用工厂类 Executors
可以把一个 Runnable
包装为一个 Callable
,但是其实并不能简单无侵入地实现获得返回值的操作(仅能得到null,除非在 run()
中进行修改操作),仅适用于“当将需要Callable的方法应用于其他无结果的操作时,这个方法会很有用”。
public static <T> Callable<T> callable(Runnable task, T task)