即使任务再多,也只用1个线程完成任务。Executors.newSingleThreadScheduledExecutor() ,创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期执行。ExecutorService线程池提供了两个很方便的停止线程池中线程的方法,他们是shutdown和shutdownNow。shutdown不会接受新的任务,但是会等待现有任务执行完毕。而shutdownNow会尝试立马终止现有运行的线程。如果不能够对异常进行合理的处理,那么将会产生不可预料的问题。第一种方法就是继承ThreadPoolExecutor,重写和这两个方法。其中afterExecute会在任务执行完毕之后被调用,Throwable t中保存的是可能出现的运行时异常和Error。ExecutorService除了execute来提交任务之外,还可以使用submit来提交任务。不同之处是submit会返回一个Future来保存执行的结果。或者在自定义ThreadPoolExecutor中,重写beforeExecute方法,在其中加入ThreadLocal的remove操作。
暂无评论