有关使用ScheduledThreadPoolExecutor实现定时处理任务

使用ScheduledThreadPoolExecutor实现定时任务 ,如下样例,定时输出系统时间,每隔两秒执行一次。 Thread.sleep作用是线程执行的时间,假如处理业务时间是10秒
public static void main(String[] args) {
          
   
		ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
		executor.scheduleAtFixedRate(new Runnable() {
          
   
			@Override
			public void run() {
          
   
				System.out.println(DateFormatUtils.format(System.currentTimeMillis(), "HH:mm:ss SSS"));
			}
		}, 0, 2, TimeUnit.SECONDS);
		try {
          
   
			Thread.sleep(10000);
		} catch (InterruptedException e) {
          
   
			e.printStackTrace();
		}
		executor.shutdown();
	}
	//10秒之内会输出5次系统时间,每隔两秒执行一次。

//或者使用如下方式

	public static void main(String[] args) {
          
   
		ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
		executor .scheduleAtFixedRate(new Runnable() {
          
   
			int i = 0;
			@Override
			public void run() {
          
   
				System.out.println("执行"+i++);
				//可以对业务的返回结果进行判断是否结束该线程。
				//适用于不知道业务处理的时间
				if(i==10){
          
   
					executor .shutdown();
				}
			}
		},0,1000, TimeUnit.MILLISECONDS);
	}
经验分享 程序员 微信小程序 职场和发展