Java多线程系列(六)池化思想的优秀代表——线程池

本文深入探讨Java线程池的概念,强调池化思想的优势,讲解ExecutorService、Future、Callable和submit()的使用。通过分析线程池的内部结构、工作原理和创建方法,帮助读者理解如何有效利用线程池。文章还讨论了JDK提供的FixedThreadPool、SingleThreadExecutor和CachedThreadPool等线程池实现,并提出自定义线程池配置的重要性。
摘要由CSDN通过智能技术生成

前言

本文介绍java多线程最不可缺少的一环——线程池。

说到线程池,就不得不提池化思想了。池化思想的核心就是复用

如果我们不用线程池,而是自己创建Thread对象来运行任务,系统就会不断的创建和回收Thread对象,而这其中必然会造成系统效率的下降和资源的浪费。

但是如果我们提前准备了一些空闲的Thread对象,需要的时候直接拿来用,用完了再把空闲的Thread对象存起来以备下次使用。这样就避免了系统临时创建线程和回收线程所产生的资源浪费。

这就是线程池的由来。

本文会从学习线程池所需要的前置知识入手,继而通过解剖线程池的内部结构和工作原理,来带动学习如何具体使用线程池。最后还会根据所学知识分析JDK提供的几种具体的线程池的特点。

线程池的前置知识

要讲线程池的前置知识,让我们先预支下之后要用到的内容,来看看正常情况下是如何使用线程池的吧:

public static void main(String[] args) throws Exception {
   
        ExecutorService executor = Executors.newCachedThreadPool();

        Future<Integer> future = executor.submit(new Callable<Integer>() {
   
            @Override
            public Integer call() throws Exception {
   
                return 0;
            }
        });

        future.get(); // 阻塞方法,直到future有结果
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值