ScheduledThreadPoolExecutor ses =  new ScheduledThreadPoolExecutor(1);
ses.scheduleAtFixedRate(new timeThread(), 6000, 6000,TimeUnit.MILLISECONDS);如何重新计时执行timeThread任务。我傻傻的shutdown()了,再重新new一个线程池
ses.shutdown();
ses = new ScheduledThreadPoolExecutor(1);
ses.scheduleAtFixedRate(timeThread, 6000, 6000,TimeUnit.MILLISECONDS);
有没好办法? 还是都是这么整的?

解决方案 »

  1.   

    系统关闭时才shutdown,重置的意义在哪里。
      

  2.   


    你的需求就是要求你要先shutdown,然后在生成新的线程池嘛。(这种需求不是很多啊)
    当然也可以设计一个flag,让第一个线程自动结束。
    你后面继续提交新的线程到线程池就是了。
      

  3.   

    我现在希望不要shutdown,而是直接新计时,又NEW一个会耗性能
      

  4.   

    完美解决.代码如下ScheduledThreadPoolExecutor ses = new ScheduledThreadPoolExecutor(1);
    Future future = ses.scheduleAtFixedRate(new timeThread(), 6000, 6000,TimeUnit.MILLISECONDS);             void resetInactivityTimer() {
    if (ses.isShutdown() == false) {
    if (future.cancel(false)) {
    future = ses.scheduleAtFixedRate(timeThread, 6000, 6000,
    TimeUnit.MILLISECONDS);
    } else {
    // donothing
    System.out.println("计时器不需要重置");
    }
    } }