gpt4 book ai didi

java - 多线程和多个 BufferedReader

转载 作者:行者123 更新时间:2023-11-29 03:06:55 26 4
gpt4 key购买 nike


我有一个创建 4 个线程的程序。
在每个线程中我创建一个 tcp 连接。
每个连接都有它的 BufferedOutputStream 和 BufferedReader。
每个 TCP 连接都被处理通过分离的线程
每个线程的目的是处理我传递给内部的数组。
问题是,根据我创建的线程数量,运行每个线程所花费的时间没有变化。
嗅了半天,发现问题出在InputStream的读取上,恰好在一行
while((line=reader.readLine()) !=null){do stuff}
当我注释这行代码时,程序运行得更快,这是应该的。
我同意线程在从流中读取时被阻塞,假设需要 1 秒,但如果我增加线程数,则必须更快地完成工作。
但在我的例子中,在 1 个或 4 个线程中,我处理相同的数据、相同的时间。
我做错了什么?请帮助我。

最佳答案

您很可能正在使用阻塞 IO,但不要期望它会阻塞。

我建议你要么使用;

  • 非阻塞 IO(不容易),
  • 使用线程阅读,或者
  • 重新考虑您的设计,期望 readLine() 应该阻塞。

关于java - 多线程和多个 BufferedReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31727780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com