线程池面试题

本文探讨了使用线程池的原因及其优势,详细阐述了几种常见的线程池类型,如newSingleThreadExecutor、newFixedThreadPool和newScheduledThreadPool,以及它们各自适用的场景。同时,强调了避免使用Executors创建线程池,推荐使用ThreadPoolExecutor以更好地理解和控制线程池的运行机制,防止资源过度消耗的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、为什么要使用线程池?

创建线程和销毁线程的花销是比较大的,这些时间有可能比处理业务的时间还要长。
这样频繁的创建线程和销毁线程,再加上业务工作线程,消耗系统资源的时间,可能
导致系统资源不足。(我们可以把创建和销毁的线程的过程去掉)

2、线程池有什么作用?

1、 提高效率 创建好一定数量的线程放在池中,等需要使用的时候就从池中拿一个,
	这要比需要的时候创建一个线程对象要快的多。
2、 方便管理 可以编写线程池管理代码对池中的线程同一进行管理,比如说启动时
	有该程序创建100个线程,每当有请求的时候,就分配一个线程去工作,如果刚好
	并发有101个请求,那多出的这一个请求可以排队等候,避免因无休止的创建线程
	导致系统崩溃。

3、说说几种常见的线程池及使用场景

1、newSingleThreadExecutor

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
public static ExecutorService newSingleThreadExecutor() {
    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new LinkedBlockingQueue<Runnable>()));
}

2、newFixedThreadPool

创建一个定长线程池&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值