package thread.schedule;
/**
* 实现Runnable接口
* @author add by jzh 2011-12-28
*
*/
public class Hello implements Runnable {
private String name;
public Hello(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println(name);
}
}
package thread.schedule;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Test {
/**
* @author jzh add 2011-12-28
* @param args
*/
public static void main(String[] args) {
// 创建一个线程池(指定线程数量为3)
// Executors 类提供了用于此包中所提供的执行程序服务的工厂方法
ScheduledExecutorService pool = Executors.newScheduledThreadPool(3);
// 创建并执行在给定延迟后启用的一次性操作。
pool.schedule(new Hello("chanpinxue.cn"), 1, TimeUnit.SECONDS);
// 创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;
// 也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,
// 接着在 initialDelay + 2 * period 后执行,依此类推。
pool.scheduleAtFixedRate(new Hello("jiangzhihao"), 2, 1, TimeUnit.SECONDS);
// 创建并执行一个在给定初始延迟后首次启用的定期操作,
// 随后,在每一次执行终止和下一次执行开始之间都存在给定的延迟。
pool.scheduleWithFixedDelay(new Hello("jzh"), 3, 2, TimeUnit.SECONDS);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
pool.shutdown();
}
}