2分ごとにdbを呼び出して新しいタスクをチェックするプログラムを開発しました
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleWithFixedDelay(new ESMSCampaignTask(), 0, 2, TimeUnit.MINUTES);
}
DBからのコードチェックに続いてスレッドを実行
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
私が探している解決策は、上記のスレッドの完了ステータスを取得して、それに応じて DB を更新する方法です。
execService.awaitTermination(500, TimeUnit.SECONDS); を試してみました。
しかし、既存のスレッドがタスクを完了するまで、新しいスレッドを開始することはできません。
したがって、ソリューションは、既存のスレッドの完了を待たずに2分ごとに新しいスレッドを開始できる機能を提供する必要があり、その間、スレッドの完了ステータスを取得し続けるため、それに応じてデータベースを更新します。
よろしく、