排队程序j***a语言,j***a 排队

kodinid 15 0

大家好,今天小编关注到一个比较意思的话题,就是关于排队程序java语言问题,于是小编就整理了1个相关介绍排队程序j***a语言的解答,让我们一起看看吧。

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

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

线程池,thread pool,是一种线程使用模式,线程池维护着多个线程,等待着监督管理分配并发执行任务功能应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待***发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息然后再次进入休眠状态。为了简化对这些线程的管理,.net框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的***线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。扩展资料:应用范围1、需要大量的线程来完成任务,且完成任务的时间比较短。 WEB服务器完成网页请求这样的任务,使用线程池技术非常合适的。因为单个任务小,而任务数量巨大,你可以想象一个热门网站点击次数。 但对于长时间的任务,比如一个Telnet连接请求,线程池的优点就不明显了。因为Telnet会话时间比线程的创建时间大多了。2、对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。3、接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。突发性大量客户请求,在没有线程池情况下,将产生大量线程,虽然理论上大部分操作系统线程数目最大值不是问题,短时间内产生大量线程可能使内存到达极限,并出现"OutOfMemory"的错误

一、线程池的作用:

排队程序java语言,java 排队-第1张图片-安济编程网
图片来源网络,侵删)

线程池作用就是限制系统中执行线程的数量。

根据系统的环境情况,可以自动手动设置线程数量,达到运行的最佳效果;少了浪费了系统***,多了造成系统拥挤效率不高。用线程池线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一***处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了;否则进入等待队列。

二、如何使用:

排队程序java语言,java 排队-第2张图片-安济编程网
(图片来源网络,侵删)

配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是较优的,因此在Executors类里面提供了一些静态工厂,生成一些常用的线程池。

1. newSingleThreadExecutor创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。

2.newFixedThreadPool创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。

排队程序java语言,java 排队-第3张图片-安济编程网
(图片来源网络,侵删)

3. newCachedThreadPool创建一个可缓存的线程池。如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。4.newScheduledThreadPool创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。

到此,以上就是小编对于排队程序j***a语言的问题就介绍到这了,希望介绍关于排队程序j***a语言的1点解答对大家有用。

标签: 线程 任务 一个

上一个精雕动态编程教学教程,

下一个c语言 期末试题,C语言期末试题及答案