不知道你在做什么功能,但是你这个不断重试调用一个接口,其他人看到这样的方案或者代码会不会emo?
死循环和线程不矛盾呀
你可以建立个线程里面死循环
也可以异步调用(其实相当于不断的调用线程池)
也可以拖个timer,定时启动线程执行
两个没冲突,建议开个线程,因为死循环了,原来线程什么都干不了了。
新线程死循环中加入,例如:if (list.size == 0) Thread.sleep(10 * 60 * 1000); 时间怎么写自己决定。
参考
```java
package task6th;
//导入包下的类
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest02 {
public static void main(String[] args) {
//开启一个新的线程
Timer t=new Timer();
//调用shedule
t.schedule(new Mytimer(),0);
//使用try-catch语句,尝试执行,但是可能会出现异常的代码
try{
for(int i=0;;i++){//使用for循环,循环打印出i
System.out.println(i);
Thread.sleep(1000);//休眠1秒,每隔1秒打印出i
}
}//把异常放入e中,捕获异常对异常做处理
catch(InterruptedException e){
e.printStackTrace();//打印异常信息
}
}
}
//开一个线程继承TimerTask类,重写run()方法
class Mytimer extends TimerTask{
public void run(){//重写run()方法
try{
while(true){ //定义死循环
Date d=new Date();//创建日期对象
//给sdf赋值为new SimpleDateFormat(),返回的值为当前日期
SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd: HH:mm:ss");
System.out.println(sdf.format(d));//输出当前日期
Thread.sleep(1000*3);//休眠3秒打印一次当前时间
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
```
用创建新的线程好一些,避免长的调用链
第一次循环跳出后,发起新的线程(同时原线程随即结束),先sleep10分钟,再进入新的循环