【问题标题】:Repeatable task in KotlinKotlin 中的可重复任务
【发布时间】:2019-03-20 21:20:54
【问题描述】:

我正在使用 Kotlin 编写桌面应用程序,我想每隔 X 秒重复执行一次函数。

我找到了使用 android 库的解决方案,还有其他选择吗?也许像 Java 中的 TaskRunner 之类的?

解决方案

我用Timer().schedule(startAfter, delay){...}简单易行;)

【问题讨论】:

  • Executors.newScheduledThreadPool()
  • @MarkoTopolnik 使用线程池和延迟/睡眠?
  • 不,这是一个预定的执行器服务。重复安排任务。
  • @MarkoTopolnik 你能写例子吗?我想每 5 秒重复一个功能

标签: kotlin task runner


【解决方案1】:

您可以使用来自 kotlin-stdlib 的 timer function

使用示例:

fun main(args: Array<String>)  {
    val timer = timer(period = 1000) { // period in milliseconds
        println("this task is repeating 10 times")
    }
    Thread.sleep(10000)
    timer.cancel()
    timer.purge()
}

【讨论】:

  • 我认为这个例子是错误的。它会休眠 10 秒,然后退出而不打印
  • 我在发布答案之前已经对其进行了测试,它有效
  • 这只是 Java 1.3 Timer 的包装,被 Java 5 ScheduledExecutorService 取代。基本使用没问题,但是每个定时器都启动自己的线程。
  • 我同意不要过度使用这种方法。但 OP 并没有准确说明以不同的速率调度了多少个函数。
  • 谢谢!但我找到了更好的解决方案,请检查;)(主帖已编辑)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 2023-03-28
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多