La clase SimpleThreadPool incluida junto con Quartz Scheduler no tiene un comportamiento FIFO. Quiero asegurarme de que si continúo agregando trabajos al planificador, se los direccione primero en entrar, primero en salir. ¿Hay algún ThreadPool disponible para esto? ¿O hay alguna otra forma de lograr esto?Programador de cuarzo theadpool
5
A
Respuesta
5
Se podría lograr esto mediante la delegación a un ThreadPoolExecutor con una cola FIFO, de la siguiente manera:
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
}
Es posible que la cuenta activa de los ejecutables no coincidirá exactamente con el número exacto de las tareas que se están ejecutando. Tendrá que agregar un pestillo y usar beforeExecute para asegurar que la tarea comenzó a ejecutarse si es necesario.
Cuestiones relacionadas
- 1. cuarzo programa de ejemplo programador que da un error
- 2. Programador de cuarzo que no se detiene después del cierre
- 3. programador de cuarzo: se ejecuta el último día del mes
- 4. haciendo que el programador de Cuarzo sea persistente sin JDBC
- 5. biblioteca Programador en C++ similar a Java cuarzo
- 6. programador de cuarzo de java inicia un nuevo trabajo de inmediato
- 7. Error de programador de cuarzo al crear una instancia de trabajo
- 8. Trabajos de cuarzo de cocción manualmente
- 9. ¿Cómo funcionaría un programador de tareas como el cuarzo cuando tiene varios servidores?
- 10. Tener cuarzo ejecutar un trabajo solo en un hilo cuando hay varios hilos de cuarzo
- 11. excepción slf4j con cuarzo
- 12. Pruebas de cuarzo CronTrigger gatillo
- 13. mezcla de cuarzo y OpenGL?
- 14. ¿Cómo escalar el programador de Quartz?
- 15. ¿Cómo determinar el estado en pausa del disparador de cuarzo?
- 16. cuarzo reintento cuando el fracaso
- 17. añadir varios disparadores de trabajo de cuarzo sola
- 18. CronTrigger de cuarzo por cada dos horas
- 19. Ejecutando un trabajo de cuarzo perdido
- 20. Inyección en mi trabajo de cuarzo
- 21. Tarea inmediata de una vez con Cuarzo
- 22. Compositor de cuarzo en el iPhone UIView
- 23. Programador de tareas de Azure
- 24. Programador de tareas - Windows 7
- 25. Rápido, simple editor de programador
- 26. Programador de eventos en PostgreSQL?
- 27. Comprensión del programador de Linux
- 28. programador amigable motor de búsqueda?
- 29. Programador de primavera no funciona
- 30. Cuarzo y primavera: ¿agrupado pero NO persistente?
Este es un gran ejemplo, intentaré esto. – Shamik