core币销毁 JAVA架构之线程池是怎样工作的?
JAVA架构之线程池是怎样工作的?
java.util.concurrent包中我们能找到线程池的定义,其中ThreadPoolExecutor是我们线程池核心类,首先看看线程池类的主要参数有哪些。
corePoolSize:线程池的核心大小,也可以理解为最小的线程池大小。
maximumPoolSize:最大线程池大小。
keepAliveTime:空余线程存活时间,指的是超过corePoolSize的空余线程达到多长时间才进行销毁。
unit:销毁时间单位。
workQueue:存储等待执行线程的工作队列。
threadFactory:创建线程的工厂,一般用默认即可。
handler:拒绝策略,当工作队列、线程池全已满时如何拒绝新任务,默认抛出异常。
线程池工作流程
1、如果线程池中的线程小于corePoolSize时就会创建新线程直接执行任务。
2、如果线程池中的线程大于corePoolSize时就会暂时把任务存储到工作队列workQueue中等待执行。
3、如果工作队列workQueue也满时:当线程数小于最大线程池数maximumPoolSize时就会创建新线程来处理,而线程数大于等于最大线程池数maximumPoolSize时就会执行拒绝策略。
通俗易懂的给你解释一下,池塘里有很多鱼,我们捞一条上来把玩一番,把玩一段时间后放回池塘里去。这就是线程池的工作原理,只不过这个池塘里放的不是鱼,是一个个线程对象,用到一个就拿一个,用完放回池塘内,而这个池塘在计算机内就是对应在软件的内存中了。
ThreadPool工作原理任务先去核心线程池,如果核心线程池没有则存入到Q中;Q满了去启新的线程(启新线程时会全局锁),不能启的话就返回错误需要多了解些,参数配置和使用结合。
apex吃cpu主频吗?
是的
因为Apex是一款高度计算密集型的游戏,很多时候需要大量的CPU计算来优化游戏性能和帧率。
特别是在大规模战役和激烈的交战中,游戏会吃掉很多CPU主频。
此外,Apex的最低系统要求是Intel Core i3-6300T处理器,这也说明了这款游戏需要相对较高的CPU性能支持。
因此,在运行和玩Apex时,CPU主频是一个很关键的因素。
如果您的CPU主频不足,就可能会导致游戏卡顿或者延迟,影响游戏体验。
建议玩家在选择电脑配置时,尽量选择高性能的CPU,以确保Apex游戏的流畅运行。
是的,Apex Legends游戏吃CPU主频
因为Apex Legends游戏在运行时需要大量处理游戏场景中的数据,包括玩家角色的移动、射击、物品的生成和销毁等等,这些都需要CPU来计算和处理,因此会占用较多的CPU主频资源。
此外,如果电脑的硬件配置不足,例如CPU主频较低,会影响游戏的流畅度和运行质量。
因此,在运行Apex Legends游戏时,需要注意CPU主频的使用情况,以确保游戏的流畅运行和稳定性。
在Java并发编程中,如何扩展和优化线程池?
线程池创建和销毁是有代价的,所以可以通过提前创建线程池来缓解这个问题。但是创建多少个是个问题?
一般根据业务复杂度,比如提前创建100个,然后设置一个低水位和高水位,比如20% 和80%,当达到低水位且持续一段时间,就可以释放一部分。当高水位一段时间后,可以动态增加一部分。同时增加手动设置的api可以根据预测提前调整。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。