【发布时间】:2012-10-08 21:37:20
【问题描述】:
我需要限制某些外部服务的连接速率(在我的 servlet 中),因此我决定尝试一下 ScheduledExecutorService。调度本身似乎运行得很好,但输出只是偶尔打印 - 在大多数情况下没有输出任何内容。为什么会发生这种情况?我使用 Tomcat 7 作为测试服务器。
int waitingtimeinmilliseconds = 5000;
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
ScheduledFuture scheduledFuture = scheduledExecutorService.schedule() {
public void run() {
Fetcher fetcher = new Fetcher(loginname, password);
List<Item> items = fetcher.fetchItems();
// do something with the results
//ServletOutputStream
out.print("teststring" + items.size());
}
}, waitingtimeinmilliseconds, TimeUnit.MILLISECONDS);
scheduledExecutorService.shutdown();
【问题讨论】:
-
为什么不简单的 Thread.sleep(5000)
-
变量 'waitingtimeinmilliseconds' 实际上是由过滤器生成的。需要注意的是,到外部服务的两个连接之间总是至少有一定的时间间隔(每个 servlet 线程一个外部服务访问)。
标签: java servlets scheduling