【发布时间】:2019-02-24 14:21:15
【问题描述】:
我试图了解在 Kotlin 中以预定速率触发异步作业的最佳方式,而应用程序通常运行它是正常任务。假设我有一个简单的应用程序,它每秒只打印出“...”,但每 5 秒我想要另一个作业/线程/协程(最适合)打印“你有一条消息!”。对于异步作业,我有一个类 NotificationProducer,它看起来像这样。
class NotificationProducer {
fun produce() {
println("You have a message!")
}
}
那么,我的main方法是这样的。
while (true) {
println("...")
sleep(1000)
}
我应该使用GlobalScope.async、Timer().schedule(...) 还是一些 Quartz 工作来实现我想要的?任何建议都将受到高度赞赏。关键是通知必须来自另一个类(例如 NotificationProducer)
【问题讨论】:
-
我建议使用 Java 标准方法 - 使用
Executors.newScheduledThreadPool()创建执行程序,然后使用scheduleWithFixedDelay创建任务。注意,Runnable 任务的异常会取消执行,可能需要 try/catch -
@EugenePetrenko,为什么不用
delay函数执行协程?
标签: asynchronous kotlin quartz-scheduler