Java 的 TimerTask 运行() 函数在内部调用特征函数时未被调用
Java's TimerTask run() function not called when calling trait function inside
我有以下代码:
trait IntervalUpdate {
val updateInterval: Long
def onUpdateTask(): Unit
val timer: Timer = new Timer()
val timerTask = new TimerTask {
override def run(): Unit = onUpdateTask()
}
timer.scheduleAtFixedRate(timerTask, updateInterval, updateInterval)
}
我将此特征混合到一些 类 中并覆盖了 onUpdateTask 方法。
问题是当我这样做时,run()
函数从未被调用过。
但是如果我做类似的事情:override def run(): Unit = println("message")
然后它被调用。
我觉得这与 TimerTask
和 Timer
使用 Jave 代码并尝试使用 mixin 有关,但我认为这应该可行。
非常感谢任何帮助。
我让它工作了。我将代码更改为:
trait IntervalUpdate {
val updateInterval: Long
def onUpdateTask:() => Unit
val timer: Timer = new Timer()
val timerTask = new TimerTask {
override def run(): Unit = onUpdateTask()
}
timer.scheduleAtFixedRate(timerTask, updateInterval, updateInterval)
}
我有以下代码:
trait IntervalUpdate {
val updateInterval: Long
def onUpdateTask(): Unit
val timer: Timer = new Timer()
val timerTask = new TimerTask {
override def run(): Unit = onUpdateTask()
}
timer.scheduleAtFixedRate(timerTask, updateInterval, updateInterval)
}
我将此特征混合到一些 类 中并覆盖了 onUpdateTask 方法。
问题是当我这样做时,run()
函数从未被调用过。
但是如果我做类似的事情:override def run(): Unit = println("message")
然后它被调用。
我觉得这与 TimerTask
和 Timer
使用 Jave 代码并尝试使用 mixin 有关,但我认为这应该可行。
非常感谢任何帮助。
我让它工作了。我将代码更改为:
trait IntervalUpdate {
val updateInterval: Long
def onUpdateTask:() => Unit
val timer: Timer = new Timer()
val timerTask = new TimerTask {
override def run(): Unit = onUpdateTask()
}
timer.scheduleAtFixedRate(timerTask, updateInterval, updateInterval)
}