【发布时间】:2020-07-07 19:04:34
【问题描述】:
我需要同时打开大量网络连接(!)并尽可能快地传输数据。成千上万的连接。现在,我对每个连接都有一个线程,并从该连接的 Inputstream 中读取字符。 而且我强烈怀疑数千个线程之间的 CPU/切换可能会在这里带来一些性能问题,即使服务器真的很慢(低两位数 KB/s),因为我已经观察到吞吐量甚至不接近与线程数成正比。 所以想请教一些有并行编程经验的程序员: 是否值得重写整个程序,以便一个线程以循环方式从多个 InputStream 中读取?如果有加速,那值得编程吗?每个线程有多少个连接?或者您有其他想法可以非常快速地从多个网络输入流中读取数据?
如果我没有读到一个字符,服务器会等到我读完后再发送下一个字符吗?如果我的线程正在休眠怎么办?
【问题讨论】:
标签: java multithreading performance network-programming java-stream