La classe SimpleThreadPool fornita con Quartz Scheduler non ha un comportamento FIFO. Voglio essere sicuro che se continuo ad aggiungere lavori allo scheduler, sono indirizzati in base al principio "First in I - 1". C'è qualche ThreadPool disponibile per questo? O esiste un altro modo per raggiungere questo obiettivo?Quartz scheduler theadpool
5
A
risposta
5
Si potrebbe raggiungere questo obiettivo, delegando ad un ThreadPoolExecutor con una coda FIFO, come segue:
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
}
E 'possibile che il conteggio attiva di eseguibili non corrispondere esattamente al numero esatto di attività che sono in esecuzione. Dovresti aggiungere un latch e utilizzare beforeExecute per garantire che l'attività sia iniziata in esecuzione se necessario.
Problemi correlati
- 1. Integrazione di Tomcat e Quartz Scheduler all'avvio
- 2. Quartz - Come spegnere e riavviare lo scheduler?
- 3. Come limitare le query attivate da Quartz-Scheduler
- 4. Quando jobExecutionVetoed di JobListener verrà eseguito in Quartz Scheduler?
- 5. Quartz Scheduler non si ferma dopo lo spegnimento
- 6. Constraint due lavori da non eseguire contemporaneamente in Quartz-Scheduler
- 7. Dart ha uno scheduler?
- 8. Quartz, Unity e .NET
- 9. Spring + Quartz = Memory Leaks
- 10. Message Queue or Scheduler
- 11. Quartz Scheduler - Qual è il diff tra RAM e JDBC Job Store
- 12. Quartz Scheduler smette improvvisamente di funzionare e nessun errore di eccezione
- 13. Quartz.NET, "Errore nella comunicazione con lo scheduler remoto."
- 14. Job programmato Quartz Java: non consente l'esecuzione concomitante di Job
- 15. Quartz non attiva il trigger semplice
- 16. quarzo scheduler max proprietà numero di thread
- 17. Le istanze del programma di pianificazione Quartz sono sicure?
- 18. Quartz Dipendenza lavori
- 19. Mixing Quartz e OpenGL?
- 20. Quartz in Webapplication
- 21. Quartz Scheduler: attiva alcuni processi su ogni nodo del cluster e alcuni solo una volta per cluster
- 22. Scheduler: immediati vs CurrentThread
- 23. Primavera errore Shutdown Scheduler
- 24. EC2 esempio scheduler
- 25. Primavera Scheduler non funziona
- 26. Scheduler del dispatcher - Rx
- 27. Spring @Scheduler parallelo esecuzione
- 28. Timezone Heroku Scheduler?
- 29. Informazioni su Linux Scheduler
- 30. Opzioni Rx Scheduler deprecate
Questo è un ottimo esempio, ci proverò. – Shamik