如果我只是更换会出现什么问题
socket = new Socket()
和
socket = SocketChannel.open().socket()?
背景:我有一些使用的遗留代码new Socket()
,我希望能够中断socket.connect()
呼叫。我不想重写代码来使用 NIO。我了解到这Thread.interrupt()
不会中断socket.connect()
,但是应该socket.close()
在另一个线程上中断连接。奇怪的是,这适用于 Java 7,但不适用于 Java 6。
我不知何故想到 usingsocket = SocketChannel().open().socket()
会神奇地让我使用Thread.interrupt()
to 打断socket.connect()
。它没有,但奇怪的是,它确实在 Java 6 中也产生了socket.close()
中断!socket.connect()
请注意,我没有SocketChannel
以任何方式直接使用附件——它在我创建时出现,Socket
并且再也不会出现。
这有什么问题?