创建线程的方式四: 使用线程池
线程池相关API:
- JDK5.0提供了线程池相关的API:
- java.util.concurrent.ExecutorService
- java.util.concurrent.Executors
java.util.concurrent.ExecutorService
-
ExecutorService是真正的线程池接口
-
ExecutorService接口中的常用方法:
-
void execute(Runnable command);
- 执行任务,没有返回值 — 一般用于执行Runnable实现类
-
<T> Future<T> submit(Callable<T> task);
- 执行任务,有返回值,一般用来执行Callable实现类
- 这个方法是一个泛型方法
- 因为这个方法中有泛型结构: — 泛型结构就是< T >
- 泛型结构一般位于修饰符之后,返回值之前
- 因为这个方法中有泛型结构: — 泛型结构就是< T >
注意: 这里的< T >才是泛型结构,有了这个泛型结构才表示这个方法是一个泛型方法,这里的Future< T >并不是泛型结构
-
void shutdown();
- 关闭线程池
-
java.util.concurrent.Executors
-
线程池的工具类 — 用来创建并返回不同类型的线程池
-
Executors类中的常用方法:
-
Executors.newCachedThreadPool();
- 带缓冲的线程池 – 创建一个可根据需要创建新线程的线程池
-
Executors.newFixedThreadPool();
- 创建一个可重用固定线程数的线程池
-
Executors.newSingleThreadExecutor();
- 创建一个只有一个线程的线程池
-
Executors.newScheduledThreadPool();
- 创建一个线程池,它可以安排在给定的时间后延迟执行命令或者定期的执行命令
-