zoukankan      html  css  js  c++  java
  • Executors.newSingleThreadScheduledExecutor() 问题

    ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
    service.scheduleWithFixedDelay(new Runnable() {
        @Override
        public void run() {
            test1();//这是可以的
        }
    }, delayMinutes, minuteInterval, TimeUnit.MINUTES);
    service.scheduleWithFixedDelay(new Runnable() {
        @Override
        public void run() {
            test2(); //这是可以的
        }
    }, delayMinutes, minuteInterval, TimeUnit.MINUTES);
    

      共用一个 newSingleThreadScheduledExecutor (这里不考虑 newScheduledThreadPool )

    可以运行多个任务,但是

    1: 这几个任务是串行的,假设test2里有一个thread.sleep(20000)就会一直等待完成,才开始下一个

    2: 一个挂掉,其它都挂,所以一般都是在test1()里面, try catch到问题

    3.参考游戏里 世界刷点

    4.定时任务,重启服务器时,最好, 调用 shutdown ,确保停服会考虑正在运行的schedule, 不会导致数据丢失

  • 相关阅读:
    Java面经
    关于MarkDown语法
    JQuery
    Filter & Listener
    JSP & EL & JSTL
    Cookie & Session
    Servlet & HTTP
    Tomcat
    XML
    BootStrap
  • 原文地址:https://www.cnblogs.com/qbmiller/p/6813857.html
Copyright © 2011-2022 走看看