1、每当看到下面这种代码 new Thread(runnable).start() 时,请考虑用Executor
2、Executor
1)创建方式:Executors.new..
2)通过使用Executor,可以实现各种调优、管理、监视、记录日志、错误报告
3)Executor有4个生命周期:创建、提交、开始和完成
4)ExecutorService: extends Executor,有三种状态:运行、关闭、终止
5)支持限时的invokeAll,将多个任务提到ExecutorService并获得结果
3、Timer: timer.schedule(runnable, timout)
1)Timer在执行所有定时任务时只会创建一个线程
2)Timer线程并不捕获异常,因此当TimerTask抛出未检查的异常时将终止定时线程
4、Callable与Future
1)Runnable与Callable描述的都是抽象的计算任务
2)Future表示一个任务的生命周期,
提供 cancel、isCancelled、isDone、get/get(timeout,timeunit)
Callabletask = new Callable () { public V call() { return V; } };
CompletionServicecompletionService = new ExecutorCompletionService (executor); completionService.submit(callable) completionService.take()