gpt4 book ai didi

java - 访问使用 java.util.Timer 计划的运行任务

转载 作者:行者123 更新时间:2023-11-29 06:21:42 25 4
gpt4 key购买 nike

我正在开发一个 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 类进行子类化才能以某种方式访问​​实例(这“感觉”很奇怪,不知何故)?我想以前可能有人这样做过……我在哪里可以找到这个“过程”的例子?

提前感谢您的反馈。

最佳答案

不要使用定时器ScheduledExecutorService实现要好得多,并通过一些额外的工作提供您想要的功能。参见 409932由于某些原因,为什么要避免 Timer

关于java - 访问使用 java.util.Timer 计划的运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com