我正在尝试了解在Kotlin中以最佳方式使用异步作业定期触发,同时应用程序正在正常运行其正常任务。假设我有一个简单的应用程序,只需每秒打印出“ ......”,但每5秒钟我想要另一个作业/线程/协程(适合最好的)来打印“你有一条消息!”。对于异步作业,我有一个名为NotificationProducer
的类,它看起来像这样。
class NotificationProducer {
fun produce() {
println("You have a message!")
}
}
然后,我的主要方法看起来像这样。
while (true) {
println("...")
sleep(1000)
}
我想知道我应该使用GlobalScope.async
、Timer().schedule(...)
还是一些Quartz job来实现我的目标?非常感谢任何建议。关键问题是通知必须来自另一个类(例如NotificationProducer)。
Executors.newScheduledThreadPool()
创建执行器,然后使用scheduleWithFixedDelay
创建任务。请注意,任务Runnable中的异常会取消执行,可能需要使用try/catch。 - Eugene Petrenko