线程池介绍

# 线程池介绍

整理自《JAVA 编程思想》

一、概述

使用执行器Executor管理Thread对象。可管理异步任务的执行,无需显示地管理线程的生命周期。

二、常用Executor

  1. CachedThreadPool

    通常会创建与所需数量相同的线程,然后在它回收旧线程时停止创建新线程。

    ExecutorService exec = Executors.newCachedThreadPool();
    for (int i = 0; i < 5; i++) {
        exec.execute(new LiftOffImpl());
    }
    exec.shutdown();
  2. FixedThreadPool

    可限制线程数量。

    ExecutorService exec = Executors.newFixedThreadPool(5);
    for (int i = 0; i < 5; i++) {
        exec.execute(new LiftOffImpl());
    }
    exec.shutdown();
  3. SingleThreadExecutor

    所有任务使用相同线程并按顺序依次执行。

    ExecutorService exec = Executors.newSingleThreadExecutor();
    for (int i = 0; i < 5; i++) {
        exec.execute(new LiftOffImpl());
    }
    exec.shutdown();

三、优点

  • 重用存在的线程,减少对象创建、消亡的开销,性能佳。

  • 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。

  • 提供定时执行、定期执行、单线程、并发数控制等功能。

猜你喜欢

转载自www.cnblogs.com/wscy/p/9097234.html