线程池

369 阅读1分钟

使用线程池

  • 背景: 经常创建和销毁、使用特别大的资源,比如并发情况下的线程,对性能影响很大。
  • 思路: 提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。
  • 好处:
    1. 提高响应速度(减少了创建新线程的时间)。
    2. 降低资源消耗(重复利用线程池中的线程,不需要每次都创建)。
    3. 便于线程管理
      1. corePoolSize : 核心池的大小
      2. maximumPoolSize : 最大线程数
      3. keepAliveTime : 线程没有任务时最多保持多长时间后会终止
  • JDK5.0起提供了线程池相关API: ExecutorService 和 Executors
  • ExecutorService: 真正的线程池接口。常见的子类ThreadPoolExecutor
    1. void execute(Runnable command): 执行任务/命令,没有返回值,一般用来执行Runnable
    2. Future submit(Callable task): 执行任务,有返回值,一般用来执行Callable
    3. void shutdowm(): 关闭连接池
  • Executors: 工具类、线程池的工厂类,用于创建并返回不同类型的线程池。