导航:首页 > 信息互动>内容

什么是线程池,如何使用,为什么要用

发布时间:2023-10-26 05:15:35 来源:表弟爱知识  点击:
TAG: 百科

什么是线程池,如何使用,为什么要用

线程池,thread pool,是一种线程使用模式,线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。
功能:应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。

其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态。

为了简化对这些线程的管理,.NET框架为每个进程提供了一个线程池,一个线程池有若干个等待*作状态,当一个等待*作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。

扩展资料:
应用范围
1、需要大量的线程来完成任务,且完成任务的时间比较短。 WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。

因为单个任务小,而任务数量巨大,你可以想象一个热门网站的点击次数。 但对于长时间的任务,比如一个Telnet连接请求,线程池的优点就不明显了。因为Telnet会话时间比线程的创建时间大多了。

2、对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。
3、接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。突发性大量客户请求,在没有线程池情况下,将产生大量线程,虽然理论上大部分*作系统线程数目**值不是问题,短时间内产生大量线程可能使内存到达极限,并出现\”OutOfMemory\”的错误。

什么是线程池?为什么要使用线程池?如何使用?

线程池其实就是将多个线程对象放到一个容器当中。 可以重用线程,减少创建和销毁线程带来的消耗。

要想知道如何使用线程池,就要先知道线程池的种类有多少种?线程池大概有以下几种: 以下介绍这几种线程池的用法: 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 毫秒就会被回收。

为什么了要使用线程池,什么情况下要使用线程池

创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。

从JDK1.5开始,Java API提供了Executor框架让你可以创建不同的线程池。

比如单线程池,每次处理一个任务;数目固定的线程池或者是缓存线程池(一个适合很多生存期短的任务的程序的可扩展线程池)。

上一篇:医用口罩哪个品牌好? 下一篇:喵星人和汪星人是什么意思 喵星人和汪星人的各自解释

与什么是线程池,如何使用,为什么要用相关的文章

热点内容
三星笔记本i5的配置怎么样... 浏览:1687
魅族**如何获取root权限... 浏览:1068
蝴蝶吃什么?... 浏览:1565
服务器与pc机有什么区别?... 浏览:1959
孙艺珍的**有哪些... 浏览:1113
翰字取名男孩有什么寓意?... 浏览:1939
华为p20的参数... 浏览:557
喵星人和汪星人是什么意思 喵星人... 浏览:1936
金立**怎么刷机?... 浏览:329
iPhone7应用怎么关闭,苹果7怎么清理... 浏览:1479
成语和词语有什么区别呢?... 浏览:255
什么是环保海绵, 与普通海绵的区别?... 浏览:879
阔气是啥意思... 浏览:143
有什么**可以双卡双待且同时支持电... 浏览:1366
请问浪潮AI服务器与重庆邮电大学的... 浏览:1980
珍珠疣和尖锐如何区分... 浏览:224
OPPO R7怎么样?... 浏览:1616
华为延时拍照怎么拍... 浏览:1115
苹果**序列号“MQ”开头是什么意思... 浏览:562
什么是线雕隆鼻?... 浏览:1715