我可以使用两个不同的线程在同一个套接字上读写吗?

Ale*_*lex 9 java networking tcp

我正在为一项任务写一个小东西,我必须管理主机之间的TCP连接.我的目标最初两个TCP连接,一个来电,一个外出,和一个非常复杂的协议来管理这些连接的创建和销毁.

那么,这是一个更简单的替代方案,我希望有效.一个插座,易于连接,易于破坏.一个线程将数据写入该套接字上的流,一个线程从同一个套接字上的流中读取.我没有阻塞的问题,所以我不需要使用nio来做任何事情.

我可以做到这一点吗?

Nik*_*sov 10

TCP套接字是一个全双工流,您可以从多个线程读取和写入它.这样做是一个好主意是一个完全不同的问题.


ike*_*ami 5

如果你只有一个编写器线程和一个读者线程,它可能会产生更清晰和更简单的代码.

希望通过该套接字进行通信的其他线程会通过某个队列将请求传递给写入程序线程.类似地,读者将通过队列将传入消息分派到适当的线程.

该技术通常用于用户界面.