现在工作中使用线程池的话,基本上都使用jdk自带的Executors类,我在一次开发当中使用到了单线程化线程池(newSingleThreadExecutor),
单线程化线程池(newSingleThreadExecutor)的优点,串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。
此线程池保证所有任务的执行顺序按照任务的提交顺序执行。
但是我在开发中是这样子做的,有20个任务,我代码像下面这样子写的,有点性能问题,该任务执行完毕后,系统多了20个无用的线程池。
因为是单线程池,我使用.shutdown()方法关闭线程池,这里不会出错,因为我是先把任务放进线程池,然后在关闭线程池,shutdown()方法会让正在执行的任务继续执行下去,没有被执行的被中断。