В приложении многопоточной я есть один поток с:Разрывная из UDP сокет получить метод
datagramSocket.receive(packet);
, который ждет пакета - выполнение блокируется с получить метод. Между тем, какой-то другой поток хочет закрыть этот «ожидающий» поток.
Как я могу это достичь?
В настоящее время я просто закрыть сокет, который приводит к SocketException брошенного, который, как я полагаю, не самая лучшая идея ...
Любой помощь?
Вы можете установить тайм-аут в 'DatagramSocket' или вы можете выдать прерывание в «Thread». –
Это неплохая идея - это лучше, чем расточительные решения с тайм-аутом с задержкой, которые вы получите. Другое решение без потерь, без задержки - установить флаг «завершать» volatile и отправить поток UDP на пустую дейтаграмму, поэтому возвращать вызов receive(), чтобы он мог проверить флаг и завершить его. –
..или даже отправить «датированную» датаграмму в любой протокол сообщений, который вы используете. –