java设置多线程上传开几个线程比较合适?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java设置多线程上传开几个线程比较合适?相关的知识,希望对你有一定的参考价值。

rt 多线程比单线程快 但开多之后单个线程的执行速度也下降了 而且感觉开多了有点浪费系统资源。做上传大约开多少个线程比较合适呢?做的是关于图片上传,每次要上传几百上千张的情况。

最多20个线程 否则会对 系统产生 比较大影响 参考技术A 线程池来做,设置10个线程限制,你可以增加线程数目,对比下性能吧。 参考技术B 看服务器的。也就是硬件情况。追问

目前还是用个人电脑来试验而已,在局域网内做上传。本地内网传输速率差不多是6m每秒,我开了20个进程看了下速度在2-3m每秒。多开线程对系统有什么具体的影响吗

追答

这个你要测试啊,每个环境不同。服务器啥样谁也不知道。测试出来一个最适合你的。而且不是测你的本机,测你将来要部署的环境。

Java如何依据cpu核数设置合适的线程数

现状:
服务器为64核,有多种类型的线程,其中一种线程的线程数目前设置为5,但是在特殊情况下(某个时间点数据突发量大时)处理能力无法满足需求。暂时的解决办法是提高设置的线程数。
So:
1、向各位请教一下Java如何依据cpu核数设置合适的线程数。
2、多种类型的线程的线程数总和太多是否会对服务器的应用产生不好影响。

1:获取cpu核心数:

Runtime.getRuntime().availableProcessors();

     创建线程池:

Executors.newFixedThreadPool(nThreads);//nThreads为线程数

2:这个只要服务器内存够大,CPU核心数较多,处理数据比较强就好了,注意不要一下分配几千个线程,可 能会导致堆栈溢出的,这样程序就挂了,因为线程很费内存资源

追问

谢谢你的回答。

因为业务的需要,实际上建了可能有三四个线程池(线程数少的5个,多的16个)。而且该服务器并不只是用来做那四个线程池的逻辑,现在想评估一下64核的服务器在不影响性能的前提下可以创建多少个线程。

参考技术A 其实这线程数没有明确值,根据自己的日常业务测试吧,结合内存大小,像我以前工作的服务器ibm3650服务器设置15也没有问题的。

以上是关于java设置多线程上传开几个线程比较合适?的主要内容,如果未能解决你的问题,请参考以下文章

多线程学习总结

Day830.创建多少线程才是合适的 -Java 并发编程实战

Day830.创建多少线程才是合适的 -Java 并发编程实战

线程池应该设置多少核心线程数——Java多线程系列学习笔记

线程池应该设置多少核心线程数——Java多线程系列学习笔记

Java如何依据cpu核数设置合适的线程数