Java 多线程 ScheduledExecutorService

Java 多线程 ScheduledExecutorService

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

 

发表回复

您的电子邮箱地址不会被公开。