ScheduledExecutorService 定时器用法

Posted heart..

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ScheduledExecutorService 定时器用法相关的知识,希望对你有一定的参考价值。

1,如果只是想简单的写个定时任务,比如10分钟跑一次,那么ScheduledExecutorService是比较方便的,下面举个简单的例子

  

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CrawlerRun {
   private static final Logger logger = LoggerFactory.getLogger(CrawlerRun.class);
   public static void main(String[] args) {
      ScheduledExecutorService service = Executors.newScheduledThreadPool(8);//先定义8个线程空间
      final ScheduledFuture<?> future = service.scheduleAtFixedRate(new CrawlerTest(), 0,10,
                 TimeUnit.MINUTES);//CrawlerTest()是一个实现Runnable接口的类,会自动运行里面的run()方法

     //使用1个线程
         Thread t= new Thread(new Runnable() {
                public void run() {
                    try {
                        future.get();
                    } catch (Exception e) {
                        logger.error(e.getCause().getMessage(), e.getCause());//日志信息输出
                        future.cancel(false);//关闭线程
                    }
                }
        });
        t.start() ;

   }
}

 

以上是关于ScheduledExecutorService 定时器用法的主要内容,如果未能解决你的问题,请参考以下文章

ScheduledExecutorService 定时器用法

ScheduledExecutorService - 单次操作后程序未结束

Java ScheduledExecutorService源码分析

关闭 ScheduledExecutorService

如何使用 ScheduledExecutorService 更改重复任务的速率或周期? [复制]

如何使用 ScheduledExecutorService 每天在特定时间运行特定任务?