我有一个问题要解决。其中我需要运行可运行对象的列表,并在每次请求执行时有一些延迟。
比如说我有一个如下所示的列表
List<MyReqObject> myReqObjects=new ArrayList<MyReqObject>();
并且我已经创建了一个具有 X 个线程的执行程序,如下所示
ExecutorService execute=Executors.newFixedThreadPool(X)
现在使用 execute.invokeAl(myReqObjects);
我试图调用所有这些请求...
但我应该在这些之间有一个延迟。 为了实现这一点,我尝试了
ScheduledExecutorService scheduler =Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(myObject, 2, 7, SECONDS);
但是在这里我不能将列表作为参数发送,所以我可以执行相同的请求 7 秒,延迟 2 秒...
有什么办法可以解决我的问题吗
最佳答案
创建一个计时器:
Timer timer = new Timer();
如果你需要运行一次:
timer.schedule(new TimerTask() {
@Override
public void run() {
// Your code here
}
}, 2*1000);
重复运行:
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Your code here
}
}, 2*1000);
查看 Timer 和 TimerTask 的一些编码示例 here
关于java - 执行具有时间间隔的可运行列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401705/