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