构建线程池的方法: 1.使用Executor框架提供的线程池、使用ThreadPoolExecutor自定义线程池,但前者也是通过ThreadPoolExecutor实现的。 2.创建实现Runnable或callnable接口的任务对象 3.将对象交给ExecutorService执行。通过excute(不需要返回结果的任务)或submit(需要返回结果的任务),submit会返回一个Future对象,通过future对象的get()可以获取任务执行结果。 4.最后shutdown回收线程,或者使用future.cancel()等方法来取消任务执行