我开发了一个程序,每两分钟调用一次 db 来检查新任务
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleWithFixedDelay(new ESMSCampaignTask(), 0, 2, TimeUnit.MINUTES);
}
现在从数据库检查代码并执行线程
public void run() {
ExecutorService execService = Executors.newFixedThreadPool(5);
List<ScheduledCampaigns> scheduledCampaignsList = campaignsService.getScheduledCampaigns();
for (ScheduledCampaigns campaign : scheduledCampaignsList) {
String cmpName = "SCH_CAMPAIGNS_" + campaign.getCampaign_id();
execService.execute(new Runnable() {
public void run() {
smppService.submitShortMessage(campaign);
}
});
}//EO For Loop
}//EO Run
我正在寻找的解决方案是如何获得上述线程的完成状态,以便相应地更新数据库?
我试图 execService.awaitTermination(500, TimeUnit.SECONDS);
但是在现有线程完成任务之前,我将无法启动新线程。
所以解决方案应该提供这样的功能,我可以在每两分钟后启动新线程而无需等待现有线程完成,同时我继续获取线程完成的状态,因此我相应地更新数据库。
问候,