MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

    循环定时任务这样写对吗?

    开发交流
    2
    8
    551
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 何梓Black
      何梓Black last edited by

      // 线程调用服务
          val scheduler: ScheduledExecutorService = Executors.newScheduledThreadPool(3)
      
          // 启动循环
          fun startCycleTask(){
              scheduler.scheduleWithFixedDelay(task,100,200,TimeUnit.MICROSECONDS) // 指定间隔,调用之间的间隔 延时在前一次调用结束到下一次调用开始
              scheduler.scheduleAtFixedRate(task,100,200,TimeUnit.MICROSECONDS) // 指定频率,两次调用的间隔 延时在上一次调用开始到下一次调用开始
          }
      
          // 定时任务
          private val task = object :TimerTask(){
              override fun run() {
                  timerTask()
              }
              fun timerTask(){
                  scheduler.submit {
                      PluginMain.launch {
                          /* do something */
                          delay(1000) //  
                      }
                  }
              }
          }
      
      1 Reply Last reply Reply Quote 0
      • cssxsh
        cssxsh last edited by

        你为什么要混合 java 线程 和 kotlin 协程

        1 Reply Last reply Reply Quote 0
        • cssxsh
          cssxsh last edited by

          对于 你应该参考 文档里的 Java 线程生命周期管理

          https://github.com/mamoe/mirai/blob/dev/mirai-console/docs/plugin/JVMPlugin.md#java-线程生命周期管理

          请不要混合使用 java 线程 和 kotlin 协程
          尤其是你不清楚如何管理他们的时候

          何梓Black 2 Replies Last reply Reply Quote 0
          • 何梓Black
            何梓Black @cssxsh last edited by

            @cssxsh 乐

            1 Reply Last reply Reply Quote 0
            • 何梓Black
              何梓Black @cssxsh last edited by

              @cssxsh 那么我要使用协程进行定时循环的任务应该怎么做呢,么么

              cssxsh 1 Reply Last reply Reply Quote 0
              • cssxsh
                cssxsh @何梓Black last edited by

                @何梓Black

                        launch { 
                            while (isActive) {
                                // do something
                                
                                launch { 
                                    // async do something
                                }
                                
                                delay(10_000)
                            }
                        }
                
                何梓Black 2 Replies Last reply Reply Quote 0
                • 何梓Black
                  何梓Black @cssxsh last edited by

                  @cssxsh 感谢大佬么么

                  1 Reply Last reply Reply Quote 0
                  • 何梓Black
                    何梓Black @cssxsh last edited by

                    @cssxsh 9e56c2e6-863f-4854-adc7-e53d07f67f6f-image.png
                    所以我可以把一个功能已经其关联协程这样写在一个ListenerHost中吗?

                    1 Reply Last reply Reply Quote 0
                    • 1 / 1
                    • First post
                      Last post
                    Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact