【发布时间】:2015-04-17 07:49:24
【问题描述】:
我的主应用程序中有以下代码:
package acast;
import java.net.SocketException;
import java.util.concurrent.ConcurrentLinkedQueue;
public class ACast {
private ConcurrentLinkedQueue<String> queue;
public ACast() throws SocketException{
queue = new ConcurrentLinkedQueue<String>();
UDPServer srv = new UDPServer(4321);
srv.addUDPacketListener(new UDPPacketListener() {
@Override
public void onPacketReceived(String packet) {
ACast.this.queue.offer(packet);
}
});
srv.start();
}
public static void main(String[] args) throws SocketException {
try{
new ACast();
}
catch(SocketException e){
//e.printStackTrace();
System.out.println("Socket allready opened. Can't start application");
System.exit(1);
}
}
}
我的 UDPServer 扩展 Thread 并在每次收到 UDP 数据报时调用 onPacketReceived。我希望我的主应用程序在每次配置的超时时间自上次接收到的数据报后执行一些操作。我想避免运行一个只检查超时的线程。我想在最后收到数据报的那一刻开始一个倒计时线程,并取消任何其他正在进行的超时线程(如果有)。有什么帮助吗?
【问题讨论】:
标签: java multithreading udp server