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, 不会导致数据丢失

  • 相关阅读:
    AngularJS自定义表单验证器
    AngularJS自定义表单验证
    DataTables自定义筛选器
    DataTables列过滤器
    DataTables语言国际化
    DataTables DOM定位
    DataTables自定义事件
    DataTables给表格绑定事件
    自定义Celery任务记录器
    celery 日志设置
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11655253.html
Copyright © 2011-2022 走看看