gpt4 book ai didi

java - 如何实现基于事件的计时器?

转载 作者:行者123 更新时间:2023-12-02 11:31:31 24 4
gpt4 key购买 nike

我正在尝试编写事件中断代码。这是我被困住的一小段代码。

//some code here
long current_time=System.currentTimeMillis();
long end=current_time+10*1000;//a timer limit of 10 seconds
Packet_ packet_=new Packet_();
while(end>System.currentTimeMillis()){
packet_ = receivePacket();//System waits for the packet to arrive on the socket in the receivePacket function.
break;
}
packet_.printPacketDetails();
//some code here

在这里,我将结束变量设置为 10 秒。

我想在收到数据包或计时器关闭时退出循环。

这里的问题是,如果数据包到达,代码就会从 while 循环中出来,但如果当前时间越过 end 变量,代码就不会从 while 循环中出来。

最佳答案

有了 Future 就更简单了:

private final ExecutorService executorService = Executors.newSingleThreadExecutor();

Future<Packet> future = executorService.submit(() -> receivePacket());
try {
Packet packet = future.get(10, TimeUnit.SECONDS);
} catch (TimeoutException e) {
    // HANDLE TIMEOUT HERE
} catch (InterruptedException | ExecutionException e) {
// HANDLE FAILURE HERE
}

关于java - 如何实现基于事件的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49261901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com