【发布时间】:2015-10-22 01:08:06
【问题描述】:
我有一个创建 4 个线程的程序。
在每个线程中我创建一个 tcp 连接。
每个连接都有其 BufferedOutputStream 和 BufferedReader。
每个 TCP 连接由单独的线程处理 每个线程的目的是处理我传入的数组。
问题是,运行每个线程所花费的时间不会因我创建的线程数量而异。
经过长时间的嗅探,我发现问题出在从 InputStream 读取,正好在一行while((line=reader.readLine())!=null){do stuff}
当我评论这行代码时,程序运行得更快,应该是。
我同意线程在从流中读取时被阻塞,假设需要 1 秒,但如果我增加线程数,工作必须更快完成。
但就我而言,在 1 个或 4 个线程中,我处理相同的数据,相同的时间。
我做错了什么?请帮帮我。
【问题讨论】:
-
如果每个 TCP 连接都有自己的阅读器,你为什么怀疑所有线程都在使用同一个阅读器?
标签: java multithreading java-io