多个线程使用ScheduledExecutorService以固定间隔并行运行

时间:2012-12-27 14:23:17

标签: java multithreading concurrency executorservice scheduledexecutorservice

目标:每5秒钟监视5个json URL,其中5个线程并行运行。

我想运行多个并行线程来监视JSON URL,每个时间间隔为n秒。我正在使用ScheduledExecutorService

ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);

for(NetworkBwXmlObject x : xmlDsList) {
    executor.scheduleAtFixedRate(new processJsonUrl(x.getJsonUrl(),x.getId(), ctx), 0, 5, TimeUnit.SECONDS);
}

class processJsonUrl implements Runnable {

}

这是创建5个线程来监控5个URL的正确方法吗?我不想在这里使用线程池。所有5个线程必须处于活动状态,直到应用程序的生命周期。

ScheduledExecutorService可以在我的方案中提供帮助,还是有其他方法可以实现这一目标?

由于

2 个答案:

答案 0 :(得分:5)

ScheduledExecutorService是一个线程池,它可以执行您想要的操作。

答案 1 :(得分:1)

我会用Quartz实现它,这是一种实现涉及计划任务的好解决方案的简单方法: http://quartz-scheduler.org/