Java 不使用thread.sleep暂停线程
我有java监听器。我从客户机接收数据,同时发送一些代码。下面是我的代码片段,我检查是否有任何挂起的代码要发送到设备,如果有,它将继续尝试发送5次,然后给出。我注意到,一旦它发送,我就调用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
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秒后回来检查其状态?