我正在使用ScheduledThreadPoolExecutor,並且我不知道該如何處理某些事情。如何從ScheduledThreadPoolExecutor的afterExecute中獲取任務的數據
我安排一些任務是這樣的:
scheduledExecService = new ExtendedScheduledExecutor(numThreads, myThreadFactory);
TareaActualizacion act = new TareaActualizacion(inst);
ScheduledFuture<?> handle = scheduledExecService.scheduleWithFixedDelay(act, retrasoInicial, segundosRefresco, TimeUnit.SECONDS);
行爲是由參數recive一些數據可運行的類:在我想要的ExtendedSecheduledExecutor的afterExecute方法
public class TareaActualizacion implements Runnable {
private Instalacion instalacion;
public TareaActualizacion(Instalacion instalacion) {
this.instalacion = instalacion;
}
@Override
public void run() {
//Do something
}
public Instalacion getInstalacion() {
return instalacion;
}
}
現在獲得任務TareaActualizacion的對象Instalacion,但我不知道該怎麼做。 我ExtendedScheduledExecutor類看起來是這樣的:
public class ExtendedScheduledExecutor extends ScheduledThreadPoolExecutor{
public ExtendedScheduledExecutor(int arg0) {
super(arg0);
}
public ExtendedScheduledExecutor(int arg0, ThreadFactory arg1) {
super(arg0, arg1);
}
@Override
protected void afterExecute(Runnable r, Throwable t)
{
super.afterExecute(r, t);
System.out.println("Executing afterExecute. Throwable is " + t);
if (t != null)
t.printStackTrace();
//I need to get the Instalacion attribute from TareaActualizacion task. How can I do it??
}
}
的我怎麼能解決這個問題的任何想法?
謝謝!
諾伊斯
我想我必須解釋爲什麼我這樣做。每個任務都會更新一些與Instalacion相關的數據庫數據。 因此,更新數據後,我需要更新顯示此數據的屏幕上的圖表,但前提是用戶正在查閱已更新的Instalacion的數據。這就是爲什麼我需要知道與哪個Instalacion是相關的任務,因爲我需要知道如果我必須刷新屏幕上的圖表。我的想法是我在帖子中解釋的,但也許有更好的解決方案 – user3374578