detener la ejecución programada de Spring si se bloquea después de un tiempo fijo

He usado Spring Framework'sScheduled programar mi trabajo para que se ejecute cada 5 minutos usando cron. Pero en algún momento mi trabajo espera infinitamente un recurso externo y no puedo poner tiempo fuera. No puedo usarfixedDelay Como el proceso anterior en algún momento pasa en modo de espera infinita y tengo que actualizar los datos cada 5 minutos.

Así que estaba buscando cualquier opción en Spring FrameworkScheduled para detener ese proceso / hilo después de unfixed-time o se ejecuta con éxito o no.

He encontrado a continuación la configuración que inicializóThreadPoolExecutor con 120 segundos parakeepAliveTime que puse en@Configuration clase. ¿Alguien puede decirme si esto funcionará como esperaba?

@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
    int coreThreads = 8;
    int maxThreads = 20;
    final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
            coreThreads, maxThreads, 120L, 
            TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()
    );
    threadPoolExecutor.allowCoreThreadTimeOut(true);

    return threadPoolExecutor;
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta