java - 执行具有时间间隔的可运行列表

标签 java multithreading

我有一个问题要解决。其中我需要运行可运行对象的列表,并在每次请求执行时有一些延迟。

比如说我有一个如下所示的列表

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/

相关文章:

c++ - 通过引用将参数传递给 std::async 失败

c - 非线程应用程序的线程共享库

java - 同步三个线程

C++ - 从 main 退出的最佳方式

java - 如何找到连接到服务器的客户端的 IP 地址?

java - 问 : Doing multiple loops and multiple if-statements and if-else-statements || RENTAL CAR CALCULATOR PROJECT

java - 无法选择参数化类型

java - 如何配置 Thymeleaf 模板位置

java - 复杂计算器的对象模型

C++11 std::threads vs posix 线程