/**
* ExecutorServiceAnalyze.java
*/
package com.xxx.common.concurrent;
/**
* ExecutorService 线程池
*/
public class ExecutorServiceAnalyze {
// ExecutorService接口
// 实现类有AbstractExecutorService,ScheduledThreadPoolExecutor,ThreadPoolExecutor.
// 任务分两类:一类是实现了Runnable接口的类,一类是实现了Callable接口的类.
// Runnable任务没有返回值,而Callable任务有返回值.
// Callable的call()方法只能通过ExecutorService的submit(Callable<T> task)方法来执行,
// 并且返回一个<T> Future<T>,是表示任务等待完成的Future.
// Runnable不会返回结果,并且无法抛出经过检查的异常.
// shutdown 平滑地关闭ExecutorService,停止接受任何新的任务且等待已经提交的任务执行完成.
// awaitTermination 使线程等待timeout时长,当超过timeout时间后,会监测ExecutorService是否已经关闭,
// 若关闭则返回true,否则返回false. 和shutdown方法组合使用.
// shutdownNow 强制关闭ExecutorService,取消所有运行中的任务和在工作队列中等待的任务,
// 这个方法返回一个List列表,列表中返回的是等待在工作队列中的任务.
// List<Runnable> runs = service.shutdownNow();
// isTerminated 校验ExecutorService当前的状态是否关闭状态.
// isShutdown 在ExecutorService关闭后返回true,否则返回false.
// execute 将一个实现了Runnable类型的类的实例作为参数传入execute方法并执行.
// submit 提交一个有返回值的任务用于执行,参数为Runnable或Callable.
/**
* Application entry point.
*/
public static void main(String[] args) {
// 创建一个使用单个 worker 线程的 Executor
// ExecutorService executorService = Executors.newSingleThreadExecutor();
// 创建一个可重用固定线程数的线程池
// ExecutorService executorService = Executors.newFixedThreadPool(10);
// 可安排在给定的延迟后运行或定期执行的命令
// ExecutorService executorService = Executors.newScheduledThreadPool(10);
// 可根据需要创建新线程的线程池
// ExecutorService executorService = Executors.newCachedThreadPool();
}
}