Я создаю приложение, которое прослушивает как TCP, так и UDP, и у меня возникли некоторые проблемы с моим механизмом выключения. Когда я вызываю Thread.interrupt()
в каждом из потоков прослушивания, поток TCP прерывается от прослушивания, а прослушиватель UDP - нет. Чтобы быть точным, поток TCP использует ServerSocket.accept()
, который просто возвращает (без фактического подключения). В то время как поток UDP использует DatagramSocket.receive()
и не завершает этот метод.
Это проблема в моей JRE, моей ОС, или я должен просто переключиться на (Datagram)Socket.close()
?
ОБНОВЛЕНИЕ: Я нашел анализ проблемы. Это подтверждает, что поведение не соответствует.