Java 在10秒后执行语句

Java 在10秒后执行语句,java,timer,Java,Timer,我正在运行java侦听器代码 发生的情况是,我的服务器将向客户端发送一些命令 此后,我想等待10秒,看看是否有答复,然后继续重试5次 下面是我所做的 //Select code from the db with the codeID, codeText. //send the code to the client. long t= System.currentTimeMillis(); long end = t+10000; while(System.currentTimeMillis() &l

我正在运行java侦听器代码

发生的情况是,我的服务器将向客户端发送一些命令

此后,我想等待10秒,看看是否有答复,然后继续重试5次

下面是我所做的

//Select code from the db with the codeID, codeText.
//send the code to the client.
long t= System.currentTimeMillis();
long end = t+10000;
while(System.currentTimeMillis() < end) {

}
//Select from db to check if codeupdated.
//从数据库中选择代码,代码ID为codeText。
//将代码发送到客户端。
long t=System.currentTimeMillis();
长端=t+10000;
while(System.currentTimeMillis()
如果不做任何其他事情,我需要重复上述暂停

我必须重复5次吗?

使用

Thread.sleep(10*1000); //sleep 10 seconds.

无法保证您的构造能够精确地持续10秒,而且就性能而言,这是非常昂贵的

只需使用
Thread.sleep

for (int i = 0; i < 5; i++) {
        // TODO your request here
        boolean success = true; // TODO change to whatever outcome of your
                                // request
        if (success) {
            break;
        }
        else {
            try {
                Thread.sleep(10000l);
            }
            catch (InterruptedException ie) {
                // TODO handle interruptions if applicable
            }
        }
    }
for(int i=0;i<5;i++){
//在这里完成您的请求
boolean success=true;//无论您的结果如何,都要更改TODO
//请求
如果(成功){
打破
}
否则{
试一试{
线程。睡眠(10000l);
}
捕获(中断异常ie){
//TODO处理中断(如果适用)
}
}
}

您应该使用
Thread.sleep()
暂停执行

这里有很好的解释:

如果失败,如何重复5次?我想在发送后,我必须运行一次线程。睡眠(10001)然后只进入这个循环,对吗?否则,这将在我发送代码后立即运行。是的,
线程.睡眠(1000l)
(请注意,
长的“l”而不是“1”)将在您在此代码段中的第一个请求后发生。如果你想先睡觉,以后再请求,只需稍微玩一下这些语句,然后将它们颠倒过来。“l”是什么意思?是的,在我的第一个请求之后,我想睡觉,然后只在失败时调用这个循环。我想那很好,对吧。因此,我不需要改变你的循环。您提到的另一件事是它的性能代价很高,有什么原因吗?@user2711681循环就像您在示例中所做的那样,因为您循环x次,并且每次迭代都初始化一个长对象。在我添加的代码片段中,它不是。这里有一个到基本数据类型的链接,您将找到有关
long
s的更多信息。睡眠后如何重复检查它是否通过?如果通过,则更新其状态并移动到下一个代码?还要重复5次吗?