任务执行

在线程中执行任务

串行地执行任务

显式地为任务创建线程

无限制创建线程的不足

  • 创建生命周期的开销非常高
  • 资源消耗
  • 稳定性

Executor框架

在Java类库中,任务执行的主要抽象不是Thread,而是Executor:

1
2
3
public interface Executor {
void execute(Runnable command);
}

Executor基于生产者-消费者模式,提交任务相当于生产者,执行任务相当于消费者。

执行策略

线程池

Executors静态工厂方法:

  • newFixedThreadPool
  • newCachedThreadPool
  • newSingleThreadExecutor
  • newScheduledThreadPool

Executor生命周期

为了解决执行任务的生命周期问题,Executor扩展了ExecutorService接口,增加了一些用于生命周期管理的方法。

延迟任务与周期任务

Timer有一些缺陷,应该使用ScheduledThreadPoolExecutor