Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不使用thread.sleep暂停线程_Java_Multithreading - Fatal编程技术网

Java 不使用thread.sleep暂停线程

Java 不使用thread.sleep暂停线程,java,multithreading,Java,Multithreading,我有java监听器。我从客户机接收数据,同时发送一些代码。下面是我的代码片段,我检查是否有任何挂起的代码要发送到设备,如果有,它将继续尝试发送5次,然后给出。我注意到,一旦它发送,我就调用Thread.sleep,这会导致线程暂停,在那里我无法从客户端接收任何数据,我的所有数据都失败,并继续进入循环,导致没有确认 for (int i = 0; i < 5; i++) { // TODO your request here //Select commandS

我有java监听器。我从客户机接收数据,同时发送一些代码。下面是我的代码片段,我检查是否有任何挂起的代码要发送到设备,如果有,它将继续尝试发送5次,然后给出。我注意到,一旦它发送,我就调用Thread.sleep,这会导致线程暂停,在那里我无法从客户端接收任何数据,我的所有数据都失败,并继续进入循环,导致没有确认

for (int i = 0; i < 5; i++) {
        // TODO your request here
        //Select commandStatus 
        //check commandStatus if acked then is true else pause and repeat
        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++){
//在这里完成您的请求
//选择命令状态
//检查commandStatus如果已确认则为真否则暂停并重复
boolean success=true;//无论您的结果如何,都要更改TODO
//请求
如果(成功){
打破
}
否则{
试一试{
线程。睡眠(10000l);
}
捕获(中断异常ie){
//TODO处理中断(如果适用)
}
}
}

当您告诉线程睡眠时,它不能做任何其他事情。这就是重点。如果你想让其他东西运行,它们必须在另一个线程中,否则你不能让线程休眠。需要更多的代码来提供有用的答案。在线程上调用sleep将导致它“暂停”至少一段参数中给定的时间(或直到被另一个线程中断)。可能您可以使用线程(例如,从线程池)重试或使用计时器()稍后执行。我想消除暂停,以便在10秒后检查是否收到之前发送的消息的任何确认?@giorashc我对代码有更多的评论发送后我想在10秒后回来检查其状态?