【发布时间】:2010-01-21 16:00:02
【问题描述】:
我有两个独立的 java 进程通过一个 TCP 连接进行通信。该协议不是像 HTTP 这样的简单同步请求/响应协议。双方可以独立发起请求和发送数据。我想使用线程和阻塞套接字来实现这一点,避免 NIO。但这有可能吗?
Java 套接字 (java.net.Socket) 不是线程安全的,因此我不允许在一个线程中读取套接字,同时在另一个线程中写入它。 (这是真的吗?)这种限制显然会导致死锁的可能性,当双方都被阻塞写入套接字时。
因此,如果不使用 NIO,则无法在 java 中实现 TCP 之上的某些协议,或者我错过了一点?
谢谢。
【问题讨论】: