gpt4 book ai didi

java - 如何检查 2 秒内发生了多少事件? (定时器)

转载 作者:行者123 更新时间:2023-11-30 11:34:00 25 4
gpt4 key购买 nike

我需要检查在 2 秒内检测到多少事件。我有计时器工作,我有其他一切工作......但我遇到了一个问题:循环每秒只检查一次,我似乎无法弄清楚如何解决这个问题。我需要它在这两秒内不断检查以查看总共有多少事件!

这是我的:

int seconds = 0;
System.out.println("Seconds: " + seconds);
while(seconds < 2)
{
//Wait 1 second
try {
Thread.sleep(1000);
}
catch(Exception e) {}

seconds++;
System.out.println("Seconds: " + seconds);

//This needs to be looping the whole time.
//But right now, it's being blocked and only checked once
if(eventDetected() && seconds <= 2){
events++;
}
}

所以你可以看到我的问题。我不能将它们分开,因为第二个计时器会运行,然后会检查 eventDetected()。我需要它在两秒计时器期间不断检查......所以我基本上需要同时发生两件事。我有什么办法可以做到这一点吗?

提前感谢您的帮助!

最佳答案

我认为您的设计模式需要改进——我不知道您要检测什么类型的事件,但无论您的 sleep 时间有多短,使用当前模式您都有可能错过一个事件。这是我的建议:

eventDetected() 增加您的 events 计数器。这样,您就不会错过任何 Activity 。

然后,您只需要一种方法来打开和关闭监听(或许还可以重置事件计数器)。如果您确定在您当前的模式中您确实处于不会阻止您的 eventDetected() 方法的不同线程中,您可以设置一个标志来检查。例如:

当您想开始收听时:

listenForEvents = true;

在 eventDetected() 中:

if (listenForEvents) { 事件++; }

当您想停止监听时(例如,在您的 Thread.sleep() 调用之后):

listenForEvents = false;

当然,对于多线程,一定要注意检查和设置变量的并发问题。

关于java - 如何检查 2 秒内发生了多少事件? (定时器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869412/

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