Je travaille sur un projet Java où j'ai créé une classe qui ressemble à ceci (version abrégée):Accès tâche en cours d'exécution prévue avec java.util.Timer
public class Daemon {
private static Timer[] timerarray=null;
private static Daemon instance=null;
protected Daemon() {
ArrayList<Timer> timers = new ArrayList<Timer>();
Timer t = new Timer("My application");
t.schedule(new Worker(), 10000,30000);
timers.add(t);
//...
timerarray = timers.toArray(new Timer[]{});
}
public static Daemon getInstance() {
if(instance==null) instance=new Daemon();
return instance;
}
public SomeClass getSomeValueFromWorker(int i) {
if(timerarray==null || i>=timerarray.length) return null;
/*
* **HOW TO ACCESS THE Worker INSTANCE IN THE Timer ARRAY HERE!? **
*/
return theValue;
}
/////////////////////////////////////////////
private class Worker extends TimerTask {
public Worker() {}
public void run() {
// do some work
}
public SomeReturnClass someMethod(SomeType someParameter) {
//
return something;
}
}
/////////////////////////////////////////////
}
Je commence cette classe, par exemple en invoquant daemon.getInstance();
.
Cependant, j'aimerais avoir un moyen d'accéder aux méthodes des objets de la tâche en cours (par exemple, pour surveiller l'état des objets). La classe Java java.util.Timer
ne semble pas fournir les moyens d'accéder à l'objet en cours d'exécution, elle planifie simplement l'instance d'objet s'étendant TimerTask
.
Existe-t-il des moyens d'accéder à l'objet "en cours d'exécution" instancié au sein d'un ? Dois-je sous-classer la classe Timer
avec les méthodes appropriées pour accéder d'une manière ou d'une autre à l'instance (cette "sensation" est étrange, en quelque sorte)? Je suppose que quelqu'un aurait pu le faire avant ... où puis-je trouver des exemples de cette "procédure"?
Merci d'avance pour vos commentaires.
Je crée une nouvelle minuterie par travail parce que chaque travail fait beaucoup de choses en dessous. J'ai omis ce que je pensais être hors de propos pour ma question. – jbatista