zoukankan      html  css  js  c++  java
  • TimerTask,Timer,ExecutorService

    TimerTask用法类似于Thread,重写其run()方法,中断用timerTask.cancel()。

    Timer是一个线程,可以往里添加TimerTask,timer.scheduleAtFixedRate(timerTask,延迟执行时间,循环周期时间),中断用timer.cancel(),以timer的线程来执行该执行的timerTask的任务。

    若timer中的timerTask较多,timerTask的处理时间超过循环周期,那么就会打乱timer时间的准确性,需要引入线程池。

    引入线程池后,timer只负责把该执行的timerTask交给线程池中产生的线程来执行,自身不用再执行timerTask中的事务。就能保证timer的稳定。

    大小不固定的线程池的获取:
    ExecutorService pool=Executors.newCachedThreadPool(new ThreadFactory() {
      @Override
      public Thread newThread(Runnable r) {
        return new Thread(r);
      }

    });

    将timer中的timerTask交给线程池处理:
    class MyTimerTast extends TimerTask{
          ExecutorService pool;
          public MyTimerTask(pool){
                this.pool=pool;
          }
          public void run(){
                pool.execute(new Runnable(){
                      public void run(){
                           原本timerTask中需要做的事情
                  }
                });
          }
    }

  • 相关阅读:
    【docker】命令学习
    docker 安装mysql
    Docker DockerFile案例 自定义的tomcat9
    尚硅谷 Docker DockerFile案例 ONBUILD命令案例
    dockerfile 案例2 CMD ENTRYPOINT命令案例
    Dockerfile案例
    Dockerfile解析
    数据卷容器
    Dockfile添加数据卷
    容器数据卷
  • 原文地址:https://www.cnblogs.com/cz305679760/p/4536413.html
Copyright © 2011-2022 走看看