Java套接字:你可以从一个线程发送并在另一个线程上接收吗?

jfr*_*z42 5 java sockets

这可能是一个非常基本的问题,但我很难找到答案.

是否可以让一个线程写入Socket的输出流,而另一个线程正在从Socket的输入流中读取?

编辑:这是与外部服务器通信的客户端应用程序.我并不是想让两个线程相互通信.抱歉模棱两可.

Tho*_*mas 5

假设您的意思是线程使用相同的套接字与外部actor进行通信而不是彼此进行通信,这很常见,因为您在等待从套接字读取时通常不想阻塞.

线程1:

block on read
on recieve message - do something
Run Code Online (Sandbox Code Playgroud)

线程2:

do things
on something happening - write to socket
Run Code Online (Sandbox Code Playgroud)

相反,如果您只是想让两个线程在内部进行通信,那么您应该研究非套接字替代方案.

编辑:还要注意潜在的并发问题,因此请检查您使用的流是否是线程安全的.