java我可以唤醒由于调用DatagramSocket而被阻塞的线程。接收()? 4 月,2 周 Questions & Answers 679 我有一个阻止UDP数据包的线程,我需要能够告诉它忘记该数据包并做一些其他事情,所有这一切都要在接收超时发生之前完成。有没有办法做到这一点
# 1 楼答案 使用DatagramChannel读取UDP数据包,并中断读取线程。根据螺纹的文件。中断(和DatagramChannel),然后读取操作将抛出ClosedByInterruptException
# 3 楼答案 JB发布了解决方案的一部分。但是如果您不使用NIO通道,这里的解决方案是关闭考虑中的套接字,并在您的runnable/callable中同样处理它I did something similar如果您感兴趣,请稍后使用TCP套接字。解决方案的可行性同样取决于在您的情况下是否可以关闭插座。在这种情况下,使用NIO解决方案将更有意义
# 1 楼答案
使用DatagramChannel读取UDP数据包,并中断读取线程。根据螺纹的文件。中断(和DatagramChannel),然后读取操作将抛出ClosedByInterruptException
# 2 楼答案
设置一个更短的读取超时时间,并让您的读取方法在认为发生读取超时之前循环正确的次数。在其他(n-1)情况下,让其检查螺纹。isInterrupted()
# 3 楼答案
JB发布了解决方案的一部分。但是如果您不使用NIO通道,这里的解决方案是关闭考虑中的套接字,并在您的runnable/callable中同样处理它I did something similar如果您感兴趣,请稍后使用TCP套接字。解决方案的可行性同样取决于在您的情况下是否可以关闭插座。在这种情况下,使用NIO解决方案将更有意义