面试常问:关于线程池的理解

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池可以有效控制线程的数量,避免大量线程之间的切换导致的性能开销。

Java中的线程池主要由以下几个部分组成:

核心线程数(corePoolSize):线程池中始终保持的线程数量。如果线程池中的线程数量小于核心线程数,即使有空闲线程,也不会被销毁。
最大线程数(maximumPoolSize):线程池中允许的最大线程数量。当工作队列满了之后,线程池会创建新的线程来处理任务,直到达到最大线程数。
工作队列(workQueue):用于存储等待执行的任务。有几种类型的工作队列,如ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等,它们具有不同的特性和适用场景。
拒绝策略(rejectedExecutionHandler):当工作队列满了且线程数达到最大值时,新来的任务如何处理。常见的拒绝策略有AbortPolicy(直接抛出异常)、CallerRunsPolicy(调用者执行任务)、DiscardOldestPolicy(丢弃队列中最旧的任务)等。
线程工厂(ThreadFactory):用于创建新线程的工厂。可以自定义线程的名称、优先级等属性。
拒绝策略(handler):当工作队列满了且线程数达到最大值时,新来的任务如何处理。常见的拒绝策略有AbortPolicy(直接抛出异常)、CallerRunsPolicy(调用者执行任务)、DiscardOldestPolicy(丢弃队列中最旧的任务)等。
以下是一个简单的Java线程池示例:
在这里插入图片描述
在这个例子中,我们创建了一个固定大小为5的线程池,然后提交了10个任务到线程池。线程池会自动分配线程来执行这些任务。当所有任务完成后,我们关闭线程池。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值