线程池的工作方式大概是这样 1.当一个任务被提交到线程池时,首先查看线程池的核心线程是否都在执行任务,否就选择一条线程执行任务,是就执行第二步。 2. 查看核心线程池是否已满,不满就创建一条线程执行任务,否则执行第三步。 3. 查看任务队列是否已满,不满就将任务存储在任务队列中,否则执行第四步。 4. 查看线程池是否已满,不满就创建一条线程执行任务,否则就按照策略处理无法执行的任务。 我是这么认为的,你可以参考, 也可能某些地方理解的不到位,也请大家指正 1.考虑当前使用的服务器性能和业务来觉,保证业务的前提条件下再考虑性能 比如:你的服务器是几核支持几线程,是否支持超线程, 这决定多线程的效果,比如你的服务器是4核支持8线程,线程池里你配置到100线程, 最多也只能8线程同时正常工作,不然多个一起工作互相抢夺CPU资源速度反而更慢了, 2.考虑业务量和处理性能, 如果你每秒任务的是几十个个, 你使用10线程的线程, 1000个队列,也用不到, 反而占用了资源,大概分析下数据量和处理速度算算多少能保证业务正常进行 3.监控一段时间后再调整调优
我不记得我是读哪本书看的来着,有可能是java并发编程的艺术。。。
哪有什么最优,线程池类型就那几个,使用的场景有N种. 按需选用就完了.把IO密集和CPU密集区分开之后就是些定制的配置
51,396
社区成员
85,836
社区内容
加载中
试试用AI创作助手写篇文章吧