我可以在我的应用程序中使用多个服务器。对于每个服务器,我需要从服务器获取一些信息到一个解耦的线程,周期为一秒。
如何使用ScheduledExecutorService
启动多个{{1}}?我应该为每个线程使用一个独占执行程序,还是我可以使用一个执行程序实例并将所有需要每秒运行的runnable传递给它?
答案 0 :(得分:1)
您正在寻找的是ScheduledExecutorService#scheduleAtFixedRate()
:
创建并执行一个周期性操作,该操作在给定的初始延迟后首先启用,然后在给定的时间段内启用;执行将在
initialDelay
然后initialDelay+period
,然后initialDelay + 2 * period
之后开始,依此类推。
这是一个简单的例子:
ScheduledExecutorService executor = Executors.newScheduledThreadPool(NUMBER_OF_THREADS);
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// runnable logic
}
}, 0, 1, TimeUnit.SECONDS);
您应该在应用程序中使用一个ExecutorService
。有关该方法的更多信息,请参阅Javadocs。