实现一个ListenableFuture的步骤如下
public static void main(String[] args) { // 将java线程池封装成自定义的线程池 ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1)); // 自定义线程返回一个ListenableFuture ListenableFuture futureTask = executorService.submit(() -> { System.out.println(111); }); // 添加一个listener, 并可以设置执行这个任务的线程池。(默认用执行任务的线程池) // 如果listener的执行时间很长,建议用其他的线程池。 ExecutorService utilExecutorService = Executors.newFixedThreadPool(1); futureTask.addListener(() -> { System.out.println("end"); }, utilExecutorService); }