gpt4 book ai didi

java - sleep 线程有时 sleep 时间超过所需时间

转载 作者:太空狗 更新时间:2023-10-29 14:51:47 28 4
gpt4 key购买 nike

我在 while 循环中调用一个线程 hibernate 1 秒。当标志为真时,循环将运行(标志为真无限时间)。在循环线程内应该 hibernate 1 秒,唤醒并增加计数器,检查 IF 条件,在 FALSE 条件下它应该再次 hibernate 1 秒并且该过程继续 29 次。在第 30 次迭代时,IF 条件将为真,在 IF 语句中调用的方法将收集并存储数据。最后,在第二个 IF 语句中调用的第 32 次迭代方法会将存储的数据发送到服务器并设置计数 = 0。问题是,有时 sleep 线程会 sleep 超过 1 分钟或无限期地 sleep 。在这里找到我随附的一段代码。

public class NetworkThread implements Runnable {
private boolean flag;

public NetworkThread(boolean bool) {
flag = bool;
isrunning();
}

private boolean isrunning() {
return flag;
}

int counter = 0;

@Override
public void run() {
sendStartPacket();
while (flag) {
try {
Thread.sleep(1000);
counter++;
if (counter % 30 == 0) {
// TODO Auto-generated method store an information
}
if (counter % 32 == 0) {
// TODO Auto-generated method send the information to server
}
} catch (Exception e) {
e.toString();
}
}
}

private void sendStartPacket() {
// TODO Auto-generated method stub

}

最佳答案

重置你的计数器!在缺少的最后一个子句中重写你的检查 if (counter >= 30)

关于java - sleep 线程有时 sleep 时间超过所需时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34654608/

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