Что может пойти не так, если я просто заменю
socket = new Socket()
с
socket = SocketChannel.open().socket()?
Предыстория: у меня есть устаревший код, использующий new Socket()
, и я хотел иметь возможность прервать вызов socket.connect()
. Я не хочу переписывать код для использования NIO. Я узнал, что Thread.interrupt()
не прерывает socket.connect()
, но socket.close()
в другом потоке должен прерывать соединение. Как ни странно, это работало с Java 7, но не с Java 6.
Каким-то образом мне пришло в голову, что использование socket = SocketChannel().open().socket()
волшебным образом позволит мне использовать Thread.interrupt()
, чтобы прервать socket.connect()
. Это не так, но, как ни странно, это делает socket.close()
прерывание socket.connect()
и в Java 6!
Обратите внимание, что я никоим образом напрямую не использую присоединенный SocketChannel
--- он появляется, когда я создаю Socket
, и больше никогда.
Что может пойти не так с этим?