Java线程池配置指南
在Java中,线程池是一种常用的并发编程工具,它可以帮助我们有效地管理线程资源,提高程序的性能,合理配置线程池可以显著提升程序的响应速度和吞吐量,本文将详细介绍Java线程池的配置方法,包括核心线程数、最大线程数、线程存活时间、队列类型和拒绝策略等。
线程池配置参数
核心线程数(Core Pool Size)
核心线程数是指线程池在运行过程中始终保持活跃的线程数量,当任务数量超过核心线程数时,线程池会根据需要创建新的线程,配置核心线程数时,需要考虑以下因素:
最大线程数(Maximum Pool Size)
最大线程数是指线程池可以创建的最大线程数量,当任务数量超过最大线程数时,线程池会根据拒绝策略处理多余的请求,配置最大线程数时,需要考虑以下因素:
线程存活时间(KeepAliveTime)
线程存活时间是指空闲线程在终止前可以存活的时间,当线程池中的线程数量超过核心线程数时,空闲线程会等待一段时间后终止,配置线程存活时间时,需要考虑以下因素:
队列类型(Queue)
线程池中的任务队列用于存放等待执行的任务,常见的队列类型有:
拒绝策略(RejectedExecutionHandler)
当任务数量超过最大线程数和队列容量时,线程池会根据拒绝策略处理多余的请求,常见的拒绝策略有:
线程池配置示例
以下是一个使用Executors工厂方法配置线程池的示例:
import java.util.CONcurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class ThreadPoolExample {public static void main(String[] args) {// 创建固定大小的线程池ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);// 创建可缓存的线程池ExecutorService cachedThreadPool = Executors.newCachedThreadPool();// 创建单线程的线程池ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();// 创建一个无界队列的线程池ExecutorService singleThreadScheduledExecutor = Executors.newSingleThreadScheduledExecutor();// 创建一个固定大小的线程池,支持定时及周期性任务执行ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);// 关闭线程池fixedThreadPool.shutdown();cachedThreadPool.shutdown();singleThreadPool.shutdown();singleThreadScheduledExecutor.shutdown();scheduledThreadPool.shutdown();try {fixedThreadPool.awaitTermination(5, TimeUnit.SECONDS);cachedThreadPool.awaitTermination(5, TimeUnit.SECONDS);singleThreadPool.awaitTermination(5, TimeUnit.SECONDS);singleThreadScheduledExecutor.awaitTermination(5, TimeUnit.SECONDS);scheduledThreadPool.awaitTermination(5, TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();}}}
问题:如何根据任务类型选择合适的线程池?
解答:对于CPU密集型任务,建议使用核心线程数等于CPU核心数的线程池;对于IO密集型任务,建议使用核心线程数大于CPU核心数的线程池。
问题:为什么有时候线程池中的线程数量会超过最大线程数?
解答:当任务数量超过最大线程数和队列容量时,线程池会根据拒绝策略处理多余的请求,如果使用的是CallerRunsPolicy拒绝策略,那么当线程池满时,任务会由提交任务的线程执行。
缓冲超时是什么意思?
缓冲的字面意思是减缓冲击力。 除了真正的冲击力外,缓冲还有抽象的意义。 凡是使某种事物的变化过程减慢或减弱进行都可以叫缓冲。 比如让化学反应不那么剧烈的物质就叫缓冲剂。 缓冲的程度不同,可用减缓的百分数来表达。 在机械振动中缓和机械所受冲击的措施。 工程中存在着各种冲击问题,飞机着陆、炮弹发射、机床部件的快速往复运动、包装物起吊或跌落等,都会使机械和地基基础受到冲击。 在冲击力作用下,机械的零部件会产生很大的动应力,并可能导致破坏,周围的机械和建筑也可能受到危害。 因此,在机械工程中对所有不需要的冲击力都应采取缓冲或者隔离的措施。 例如,锻压机械的砧座底部必须放置缓冲材料;为保证精密机械或仪器在吊装运输中不受损坏,应采取可靠的缓冲措施等。 缓冲不同于隔振和减振,它是利用缓冲器吸收冲击的能量,然后使其转变为热能,或者平缓地释放以延长速度变化的时间,从而达到尽量减小机械设备所受冲击力的目的。 缓冲器按吸收能量的方式不同可分为:机械缓冲器,能将冲击动能转化为弹性元件的变形能,或用缓冲材料的内阻耗散能量;液力缓冲器,用液压节流方式吸收能量;气体缓冲器,靠气体的压缩吸收能量。 液力缓冲器在工业上的应用较为普遍。 缓冲在各领域定义各有不同: QoS功能主要包括:缓冲、压缩、速率/流量控制、过滤、队列、流量分类、负载均衡、邮件优化、广域文件系统优化、 应用性能分析、应用基础设施改动等。 网上看电影时,缓冲就是在你看电影时提前把一下时段内容准备好,目的是可以更流畅的观看。 主要取决于CPU和内存大小,越大会反应越快。 缓冲是指在播放网络影音文件的时候,由播放器预先保存于本地硬盘临时文件夹一部分文件,以使播放更流畅。 如果播放不流畅,一是与您的网速有关,另外与播放器缓冲的大小有关,您可以在播放器的工具/选项中找到。 (内嵌于网页的播放器其实可以通过打开媒体播放器和REALPLAYER设置来进行),两种可能都有,尤其可能是网站采用的文件清晰度较差,有些网站采用动态技术,可以根据用户的网速来选择不同的码率,所以速度快的用户看到的效果会好一些,而网速慢的用户自然看起来较差一些。 缓冲是指把内容存放在本地,那样以前请求过的信息被再次请求时,就不会耗用WAN带宽。 缓冲往往应用到网页,就网页而言,对信息(而不是事务)的请求来自远程站点。 凡是在特定的LAN网段上请求网页的人,都可以跨WAN重复使用被请求过的信息。 现有的几种产品有助于Web事务的缓冲。 这种情况下,页面的某些部分不会变化,如页面标题和组织名称。 提供这类产品的厂商包括了Chutney Technologies和 FineGround Networks(严格说来,Web浏览器早就在利用及优化缓冲机制)、Converged Access以及其他一些网络厂商。 缓冲也在开始应用于文件系统和电子邮件系统。 实际上,有些较为全面的针对特定应用的缓冲(而不是普通的流量缓冲)能够集中存储和应用服务器,而不会严重影响最终用户的性能。 缓冲的引入中断技术和通道技术的引入,提供了CPU,通道和I/O设备之间的并行操作的可能性,但由于计算机外设的发展会产生通道不足而产生的“瓶颈”现象,使并行程度受到限制,因此引入了缓冲技术。 目的:1、改善CPU和I/O设备之间速度不匹配的情况; 2、可以减少I/O设备对CPU的中断次数及放宽对CPU的中断响应时间要求。
BT下载对硬盘的损伤是什么?
如今,BT下载逐步成为了大家最喜欢的下载方式,因为BT下载有它自己独特的优势——资源非常丰富,BT所能下载的很多电影和电视连续剧都是通过其他方式所不能下载到的,然而很多BT用户却一直担心BT下载会对硬盘产生损伤,这里就为大家介绍几个小技巧,让大家真正解除BT伤害硬盘的心头之忧!一、更改硬盘Cache由于BT软件同时使用多线程进行下载和上传,造成硬盘要进行大量数据吞吐,当一个文件有N个人下载的时候,硬盘就要承受1次下载和N-1次上传(也就是BT所进行的上传动作),这样硬盘的负荷就会大大增加,造成损坏的几率也大大增加。 我们可以通过修改硬盘的CACHE的方法来降低BT下载对硬盘的伤害,具体操作如下:1.修改注册表更改硬盘Cache(1)依次打开“开始→运行”,输入“regedit”打开注册表,依次展开到以下键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management;(2)这里,查看是否有“IoPageLockLimit”这个键值,如果没有可以新建一个Dword值(双字节值),此处需要输入16进制数。 Windows默认只有512KB的Cache显然不够,如果内存在256MB以上,开大一些Cache可以减少硬盘读写,提高性能。 一般设在8-16MB效果最好。 16M对应的是4000,32M对应的是8000,,如果内存大,就设置大点。 提示:计算转换方法如下:1MB = 1024K,16MB = K= 4000(16进制)= 4*16^3 + 0*16^2 + 0*16^1 + 0*16^0 = k (十进制)(3)最后重新启动计算机即可。 2.设置BT软件更改硬盘缓存修改注册表的方法对于不熟悉注册表的朋友来说可能比较麻烦,不敢轻易动手。 其实,我们还可以在BT下载软件中,通过图形化的操作界面来设置硬盘的缓存。 目前主流的BT下载软件中都带有调节缓存的设置项目,这里我们以大家所经常使用的BitComet为例进行介绍。 在打开的主界面中,可依次打开主菜单“选项→选项”,在打开的主界面中点击“磁盘缓存”选项,可以在右侧窗口中设置磁盘缓存最小值、最大值,如果下载的速度经常保持在500KB/s,那么就可以将磁盘缓存大小设为40M,当然也可以勾选“在最大值最小值范围内自动调整缓存大小”,让程序自动调整磁盘缓存。 在BT软件中进行设置就相对容易多了,不用记注册表的子键,直接输入要设置的值即可。 二、降低BT软件运行优先级BT比较占用资源,启动运行后,可能会对整个系统的性能造成一定的影响。 如果使用的是Windows 2000/XP系统,我们可以利用任务管理器把BT软件的优先级降低,这样即使它占用资源,也不会影响其它应用程序的性能,因为它抢占资源的优先级不够高,从而降低对硬盘和系统的影响。 具体操作是:在Windows XP操作系统中,可以按下“Ctrl+Alt+Del”组合键开启系统的“Windows任务管理器”,点击“进程”选项卡,找到对应的BT下载程序;然后在其上单击右键,然后将右键菜单上的“设置优先级”设置为“低于标准”或“低”就可以了。 经过以上的几种方法,我们已经把BT下载对硬盘的损伤几乎降到了“0”,只要你在使用的时候不e799bee5baa6e79fa5ee4b893e5b19e364要一次性开太多的下载或上传的窗口(通常1到3个就行了),那么你就可以放心地进行BT下载了。
手机有什么好用的浏览器啊~》?
我所知道的好用的手机浏览器有ucweb 支持登陆wap网站和互联网支持大文下载 支持手机网络硬盘 很实用的还有 航海家 浏览器至于 你的手机是不是适合你自己看下智能机 一般都能用..我下载了不少浏览器,但是感觉ucweb最好使。我觉得ucweb这个浏览器最好用了














发表评论