java socket如何从两个不同的线程发送数据

时间:2015-01-28 09:47:26

标签: java multithreading sockets synchronization

我正在使用基于套接字的clientType1 - Server - clientType2程序。

clientType1仅将数据(实际上是文件)发送到服务器,服务器将数据中继到clientType2。

clientType1,Type2可以是多个。

问题是,如果两个以上的clientType1尝试同时向一个clientType2发送文件,则clientType2无法检索这两个文件中的任何一个。

我想我知道为什么会这样。这是因为服务器上的两个线程试图同时写入同一个套接字。我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

通过让客户端服务线程写入的队列和另一个读取队列并将数据写入套接字的线程(队列必须是线程安全的)。这是最简单的解决方案之一。

另一个是使套接字共享并从synchronized{}块访问它(我假设你知道java中的同步原语)。