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(); } }