scheduleAtFixedRate()被调用两次

时间:2015-09-23 12:48:44

标签: java threadpool executorservice threadpoolexecutor

日志:

[pool-1-thread-1] TRACE apns.ApnsPushConnection - 输入方法queryFeedbackService params [pool-3-thread-1] TRACE apns.ApnsPushConnection - 输入方法queryFeedbackService params [pool-1-thread-1] TRACE apns.ApnsPushConnection - 返回方法queryFeedbackService
[pool-3-thread-1] TRACE apns.ApnsPushConnection - 返回方法queryFeedbackService

//In Singleton class constructor
ScheduledExectorService obj = Executors.newSingleThreadScheduledExecutor();


obj.scheduleAtFixedDelay(new runnable(){

     public void run(){ 
     classObj.queryFeedbackService();
}  
}),20,60,TimeUnit.SECONDS);     



//method called by thread      
public void queryFeedbackService()
{

     code here

}

2 个答案:

答案 0 :(得分:1)

根据Jean的回答,确实有2个游泳池。

但在我的情况下,我的项目被加载到由Spring初始化的Jetty服务器中。

同样在Jetty服务器内部 - 它正在为从service-context.xml文件初始化的Spring bean创建容器。

所以它被调用两次导致创建两个池

感谢所有评论和尝试解决我的问题的人。 意味着很多:)

答案 1 :(得分:0)

在日志中,您有几个正在运行的池:pool-1pool-3

您可能希望确保只初始化一个池。