TimerTask extended class 使用 java.util.Timer 重新安排任务失败
TimerTask extended class fails on rescheduling of Task using java.util.Timer
class Rhythm extends TimerTask
{
private java.util.Timer SegmentTimer;
pubic void start()
{
this.Segmenttimer = new Timer(true);
Segmenttimer.scheduleAtFixedRate(this, 0, 1000);
}
public void run() {}
public void stop()
{
this.SegmentTimer.Cancel();
}
}
class Program
{
Rhythm rhythm = new Rhythm();
for (item : List)
{
rhythm.start();
}
}
这是我的示例程序。我有一些逻辑来加载节奏对象。在这种情况下,我只是展示了在 for each 循环开始之前只创建一个新实例。原因是我正在根据 json 数据初始化节奏对象列表。所以,我想优化流程,避免循环内解析json数据的重复IO操作。
我的问题是循环的第二次迭代失败,并说 TimeTask 已经安排好了。
请帮忙解决这个问题。
您的代码不完整...TimerTask 的子 class 必须实现 运行 方法,您需要补充一点,另一方面,您不能重新启动 Timer 两次,所以这部分不正确:
for (item : List) {
rhythm.start();
}
也许您需要定义项目对象,以便它们有自己的计时器,您可以在循环中启动它
如果音符与节奏无关那么你可以这样做:
for (item : List) {
rhythm = new Rhythm();
rhythm.start();
}
class Rhythm extends TimerTask
{
private java.util.Timer SegmentTimer;
pubic void start()
{
this.Segmenttimer = new Timer(true);
Segmenttimer.scheduleAtFixedRate(this, 0, 1000);
}
public void run() {}
public void stop()
{
this.SegmentTimer.Cancel();
}
}
class Program
{
Rhythm rhythm = new Rhythm();
for (item : List)
{
rhythm.start();
}
}
这是我的示例程序。我有一些逻辑来加载节奏对象。在这种情况下,我只是展示了在 for each 循环开始之前只创建一个新实例。原因是我正在根据 json 数据初始化节奏对象列表。所以,我想优化流程,避免循环内解析json数据的重复IO操作。
我的问题是循环的第二次迭代失败,并说 TimeTask 已经安排好了。
请帮忙解决这个问题。
您的代码不完整...TimerTask 的子 class 必须实现 运行 方法,您需要补充一点,另一方面,您不能重新启动 Timer 两次,所以这部分不正确:
for (item : List) {
rhythm.start();
}
也许您需要定义项目对象,以便它们有自己的计时器,您可以在循环中启动它
如果音符与节奏无关那么你可以这样做:
for (item : List) {
rhythm = new Rhythm();
rhythm.start();
}