并发写入Socket的输出流

时间:2017-01-27 13:30:09

标签: sockets concurrency outputstream

我已经开始使用多线程TCP服务器来处理读写操作。我的主要目标是通过两个不同的线程分离读写。因此,我有一个单独的线程池用于写入socket的输出流。一旦线程完成读取并插入队列(ArrayBlockingQueue),来自池的另一个线程将从队列中选择它并写入输出流。 现在的问题是,我想知道多个线程何时尝试写入SAME套接字的输出流; - 行为怎么样? - 这是内部管理还是需要特别处理 - 字节是否混乱(混合)

在这种情况下,什么是更好的方法?

编辑: 我的问题与Are parallel calls to send/recv on the same socket valid?不一样。链接是在谈论POSIX,我忘了提到我的问题是关于JAVA套接字(socketWrite)的具体问题。要回答EJP的评论,是的,我们的TCP协议具有通过多个线程写入相同输出流的用例(以提高性能)。目前为了解决我的问题,我已经同步了outputstream;

synchronized (outputStream) {
    outputStream.write(responseMessage);
    outputStream.flush();
}

0 个答案:

没有答案