首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自上次接收数据报以来的Java超时

自上次接收数据报以来的Java超时
EN

Stack Overflow用户
提问于 2015-02-17 02:00:29
回答 2查看 42关注 0票数 0

我在我的主应用程序中有以下代码:

代码语言:javascript
复制
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扩展了线程,并在每次收到UDP数据报时调用onPacketReceived。我希望我的主应用程序在自上次接收数据报以来每次经过配置的超时时都执行某些操作。我希望避免运行一个只检查从秒到秒的超时的线程。我希望在最后收到数据报的时刻启动倒计时线程,并取消任何其他正在进行的超时线程(如果可用)。有什么帮助吗?

EN

Stack Overflow用户

发布于 2015-02-17 03:30:33

一个简单的解决方案是使用超时任务启动一个Timer,并且每次接收到新的数据报时,取消当前运行的计时器并启动一个新的计时器。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28547560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档