• 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中需要做的事情
                  }
                });
          }
    }

  • 相关阅读:
    pyinstaller相关用法
    yield 与 yield from
    async /await相关知识理解
    调试程序方法pdb
    任务22-4
    任务22-2
    跳台阶
    计算三维空间某点距离原点的欧式距离
    质数判断
    罗马数字转换
  • 原文地址:https://www.cnblogs.com/cz305679760/p/4536413.html
Copyright © 2020-2023  润新知