为什么要使用线程池 为什么用线程池不用线程

最佳回答2024-01-09

在什么情况下使用线程池?
1.单个任务处理的时间比较短
2.将需处理的任务的数量大
使用线程池的好处:
1.减少在创建和销毁线程上所花的时间以及系统资源的开销
2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。

其他回答(2)

相信自己的决定 回答时间:2024-01-09

线程池其实就是将多个线程对象放到一个容器当中。
可以重用线程,减少创建和销毁线程带来的消耗。
要想知道如何使用线程池,就要先知道线程池的种类有多少种?线程池大概有以下几种:
以下介绍这几种线程池的用法:
ThreadPoolExecutor 是线程池真正的实现方法,以下是 ThreadPoolExecutor 的构造方法:
它需要传入一系列参数来配置线程池,下面介绍每个参数的意义。
一种固定线程数量的线程池。
可以通过 Executors 的 newFixedThreadPool() 方法创建:
newFixedThreadPool() 具体实现:
可以看出 newFixedThreadPool() 是通过创建 ThreadPoolExecutor 来创建线程池的。
并且因为 corePoolSize 和 maximumPoolSize 是一样的,所以这种线程池只有核心线程,任务超出线程数后,会在队列中等待。
具体使用如下:
一种线程数量不定的线程池。
可以通过 Executors 的 newCachedThreadPool() 方法创建:
newCachedThreadPool() 具体实现:
可以看到 corePoolSize 为 0,maximumPoolSize 为 Integer.MAX_VALUE,证明这种线程池没有核心线程,但是有多个非核心线程。
这种线程池的特点就是,当有任务提交时,如果有空闲线程则复用空闲线程,没有的话就新建线程处理。
空闲线程如果超过 60 秒就会被回收。
具体使用如下:
一种只有一个工作线程的线程池。
可以通过 Executors 的 newSingleThreadExecutor() 方法创建:
newSingleThreadExecutor() 具体实现:
从源码可以看出,这种线程池只有一个核心线程,并且总线程数为 1。
具体使用如下:
一种核心线程数量固定,非核心线程数不固定的线程池。
可以通过 Executors 的 newScheduledThreadPool() 方法创建:
newScheduledThreadPool() 具体实现:
从源码可以看出这种线程池的核心线程是固定的,非核心线程数没有限制,但是非核心线程出现空闲后,10 毫秒就会被回收。
具体使用:

说搞笑的醉卉 回答时间:2024-01-09

线程池做的工作主要是控制运行的线程的数量, 处理过程中将任务放入队列 ,然后在线程创建后启动这些任务, 如果线程数量超过了最大数量超出数量的线程排队等候 ,等其它线程执行完毕,再从队列中去出任务来执行。
他的主要特点为: 线程复用;控制最大并发数;管理线程。
第一: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
第二: 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
第三: 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

司法部为什么不撤销 司法部为什么不撤销案件

该问题还有3 个回答,点击查看

刑事案件只要立案了就很难撤案是不是真的,虽然撤销案件并非易事但在一些特定情况下例如追诉时效届满、撤回刑事附带民事诉讼、发现新证据等情况下刑事案件被撤销的可能性是存在的,然而需要注意的是撤销案件的过程需要符,为什么弗林对FBI撒了谎美司法部却决定撤销起诉。

上一篇

男人为什么喜欢熟女 为什么有的男的喜欢成熟的女人

下一篇

泰迪为什么会长白毛 泰迪为什么有白色的毛发

相关问答

最新问题

分类目录

热线 热线
400-118-6638
QQ QQ
QQ在线咨询
微信 微信
微信
关注 关注
关注
返回顶部

微信扫一扫

微信扫一扫