【发布时间】:2016-05-25 03:05:03
【问题描述】:
我有以下代码:
public class ServerConnectionListener implements Runnable {
DatagramSocket receiveSocket;
DatagramPacket receivePacket;
/*
Some Initilization here in the constructor
//
//
*/
@Override
public void run()
{
try {
System.out.println("Waiting..."); // so we know we're waiting
receiveSocket.receive(receivePacket);
} catch (IOException e)
{
System.out.print("IO Exception: likely:");
e.printStackTrace();
System.exit(1);
}
//Some more stuff to be done here
}
}
我知道 receiveSocket.receive() 是一个阻塞调用。因此,我想以这样一种方式使用 Thread.currentThread().isInterrupted(),它允许我中断这个线程,而不必再等待数据包被接收到。
【问题讨论】:
-
您可以从另一个线程关闭套接字。这将导致
receive抛出异常。 -
是的,那肯定会工作:)。但是假设另一个线程没有socket的引用。在这种情况下我能做些什么吗?
-
将
close方法放入ServerConnectionListener
标签: java multithreading udp packet