La classe SimpleThreadPool livrée avec Quartz Scheduler n'a pas de comportement FIFO. Je veux m'assurer que si je continue à ajouter des tâches à l'ordonnanceur, elles sont traitées selon le principe Premier entré, premier sorti. Y a-t-il un ThreadPool disponible pour cela? Ou y a-t-il un autre moyen d'y parvenir?Quartz scheduler theadpool
5
A
Répondre
5
Vous pouvez y parvenir en déléguant à un ThreadPoolExecutor avec une file d'attente FIFO, comme suit:
public class DelegatingThreadPool implements ThreadPool {
private int size = 5; //Fix this up if you like
private final ThreadPoolExecutor executor = new ThreadPoolExecutor(size, size,
0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
public boolean runInThread(Runnable runnable) {
synchronized (executor) {
if (executor.getActiveCount() == size) {
return false;
}
executor.submit(runnable);
return true;
}
}
public int blockForAvailableThreads() {
synchronized (executor) {
return executor.getActiveCount();
}
}
public void initialize() throws SchedulerConfigException {
//noop
}
public void shutdown(boolean waitForJobsToComplete) {
//No impl provided for wait, write one if you like
executor.shutdownNow();
}
public int getPoolSize() {
return size;
}
public void setInstanceId(String schedInstId) {
//Do what you like here
}
public void setInstanceName(String schedName) {
//Do what you like here
}
Il est possible que le nombre actif de executables ne correspond pas exactement le nombre exact de tâches qui exécutent. Vous devez ajouter un verrou et utiliser le paramètre beforeExecute pour vous assurer que la tâche a démarré si cela est nécessaire.
Questions connexes
- 1. Quartz Scheduler - NoClassDefFoundError
- 2. Connexion à distance à Quartz Scheduler
- 3. Exception en cours d'exécution Programme Quartz Scheduler
- 4. Scheduler Quartz et fil mise en commun
- 5. Quartz Scheduler ne s'arrête pas après l'arrêt
- 6. Surveillance Quartz Scheduler pour avertir sur les emplois qui n'ont pas couru
- 7. Problème avec l'écriture automatique de fichiers avec FileWriter avec Quartz Scheduler
- 8. Mise à jour des plannings par programmation Quartz Scheduler basé sur des tables
- 9. Guice + quartz + iBatis
- 10. java scheduler
- 11. Linux Kernel Threads - scheduler
- 12. Ruby rufus scheduler gem
- 13. Travail à quartz non exécuté
- 14. Quelles sont les alternatives à l'Open Source Job Scheduler?
- 15. Comment cette expression de Quartz Cron est-elle exécutée?
- 16. Le programmateur à quartz ne démarre pas le travail cron
- 17. Telerik Scheduler - glisser et déposer
- 18. Les instances du planificateur Quartz sont-elles sécurisées?
- 19. Grails - Quartz
- 20. Accès illégal (Quartz avec JBoss)
- 21. Comment utiliser @Autowired dans un travail à quartz?
- 22. Telerik Scheduler "Propriété UniqueId" - comment y accéder
- 23. Last Runtime 9020 retourné par Windows Scheduler
- 24. CGPath et Quartz 2D
- 25. Valeur Oracle selectWithLockSQL quartz?
- 26. Quartz 2D Couches
- 27. Question sur CronTrigger - Quartz
- 28. Erreur API Quartz
- 29. CALayer et Quartz Transparent
- 30. emplois imbriqués dans Quartz
Ceci est un bon exemple, je vais essayer cela. – Shamik