I mis au point un programme qui, après toutes les deux minutes appel db pour vérifier les nouvelles tâchesPlanification de tâches dans une autre tâche Java
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleWithFixedDelay(new ESMSCampaignTask(), 0, 2, TimeUnit.MINUTES);
}
vérifier maintenant de code ci-dessous de DB et exécuter des fils
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
La solution i Je cherche comment est-ce que je peux obtenir le statut d'achèvement des discussions ci-dessus afin que je mette à jour DB en conséquence?
J'ai essayé de execService.awaitTermination (500, TimeUnit.SECONDS);
Mais je ne serais pas en mesure de démarrer de nouveaux threads jusqu'à ce que les threads existants finissent leur tâche. Donc la solution devrait fournir une telle fonctionnalité que je pourrais être capable de démarrer de nouveaux threads toutes les deux minutes sans attendre les complétions des threads existants et pendant ce temps je continue à obtenir le statut de complétion des threads.
Cordialement,
Il est également intéressant de vérifier [ExecutorCompletionService] (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ExecutorCompletionService.html) – eiden