前面我们已经学习了使用ThreadPoolExecutor类来实现自动创建和运行线程。但是那些线程都是一提交就会运行
,我们有时候希望不要一提交就运行,而是延迟一段时间或者周期性的运行某个任务,这样我们该怎么办呢,下面就介
绍这个类ScheduledThreadPoolExecutor,他就能帮助我们实现这样的效果,代码如下。
package com.bird.concursey.charpet7;
import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class Task implements Callable<String> {
private String name;
public Task(String name) {
super();
this.name = name;
}
@Override
public String call() throws Exception {
System.out.printf("%s: Starting at : %s\n",name,new Date());
return "hello world";
}
public static void main(String[] args) {
ScheduledThreadPoolExecutor executor = (ScheduledThreadPoolExecutor) Executors.newScheduledThreadPool(1);
System.out.printf("Main: Starting at: %s\n",new Date());
for(int i = 0; i < 5; i++) {
Task task = new Task("Task " + i);
executor.schedule(task, i, TimeUnit.SECONDS);
}
executor.shutdown();
try {
executor.awaitTermination(1, TimeUnit.DAYS);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("Main: Ends at: %s\n",new Date());
}
}
可以看到运行结果
Main: Starting at: Fri Sep 26 21:59:50 CST 2014
Task 0: Starting at : Fri Sep 26 21:59:50 CST 2014
Task 1: Starting at : Fri Sep 26 21:59:51 CST 2014
Task 2: Starting at : Fri Sep 26 21:59:52 CST 2014
Task 3: Starting at : Fri Sep 26 21:59:53 CST 2014
Task 4: Starting at : Fri Sep 26 21:59:54 CST 2014
Main: Ends at: Fri Sep 26 21:59:54 CST 2014
虽然都是同时提交的任务,dan'shi
分享到:
相关推荐
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
java多线程,对多线程,线程池进行封装,方便使用
java多线程经典案例,线程同步、线程通信、线程阻塞等经典案例
java多线程并发查询数据库,使用线程池控制分页,并发查询。
一个java 多线程操作数据库应用程序!!!
java多线程的使用方法如何使用,怎么使用,使用过程中有什么要注意的
详细的讲解了java多线程的原理,并配有代码进行实战,适合java初学者和想对多线程有进一步了解的人。
用java平台利用java的多线程特点,编写进度条的现实以及当前时间的实时更新。
java多线程处理大数据,可根据配置的线程数,任务去调度处理
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
java多线程处理数据库数据,使用并发包,无框架,可批量处数据库数据,进行增删改。。等等操作。
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制
多线程启动.java多线程启动.java多线程启动.java多线程启动.java
很多人学习完JavaSE/JavaEE之后想往更深入的技术进行探索,比如对大数据、分布式、高并发类的专题进行攻克时,立即遇到针对java.lang包中线程类的学习,但线程类的学习并不像JDBC一样简单,学习曲线陡峭,多弯路与...
该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!
Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。...本文档提供Java多线程编程经验,方便广大Java爱好者研究学习Java多线程