Java多线程之线程池ThreadPool

为什么要使用线程池?

  • 背景:经常创建和销毁使用量特别大的资源,e.g,并发情况下的线程,对性能影响很大

  • 思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中

  • 好处:

    • 提高响应速度(减少用于创建新线程的的时间开销)
    • 降低资源消耗(可重复利用线程池中的线程,不需要每次都创建)
    • 便于线程管理
  • 参数&意义

    • corePoolSize: 核心池的大小
    • maxmunPoolSize: 最大线程数
    • keepAliveTime:线程没有任务时最多保持多长时间后会终止
  • JDK 5.0开始提供线程池相关API: ExecutorService 和 Executors

  • ExecutorService : 真正的线程池接口!

    常见子类ThreadPoolExecutor

    • void execute(Runnable command) : 执行任务/命令,没有返回值,一般用于执行Runnable
    • Future submit(Callable task) : 执行任务,有返回值,一般用来执行Callable
    • void shutdown() : 关闭连接池
  • Executors: 工具类、线程池的工厂类,用于创建并返回不同类型的线程池

(不推荐使用Executors来创建线程池!)

posted @ 2021-07-15 16:16  夕立君  阅读(152)  评论(0编辑  收藏  举报