Я работаю над проектом Java, где я создал класс, который выглядит следующим образом (сокращенная версия):
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;
}
}
/////////////////////////////////////////////
}
Я начинаю этот класс, например вызывая daemon.getInstance();
.
Однако мне бы хотелось иметь какой-нибудь способ доступа к методам запущенных объектов задачи (например, для мониторинга состояния объектов).
Класс Java java.util.Timer
, кажется, не предоставляет средства для доступа к запущенному объекту, он просто планирует экземпляр объекта, расширяющий TimerTask
.
Существуют ли способы доступа к «работающему» объекту, инстанцированному в Timer
? Должен ли я создать подкласс класса Timer
с соответствующими методами, чтобы каким-то образом получить доступ к экземпляру (это как-то "странно")?
Я предполагаю, что кто-то мог сделать это раньше ... где я могу найти примеры этой "процедуры"?
Заранее благодарим вас за отзыв.