package com.huyd.xiancheng;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* 使用线程池
*
*
* */
public class ScheduledExecutorDemo implements Runnable {
//定义参数
private String scheduledExecutorName="";
//定义构造方法
public ScheduledExecutorDemo(String name){
super();
this.scheduledExecutorName=name;
}
//重写父类Runble的run方法
public void run() {
System.out.println(scheduledExecutorName+"start...");
}
public static void main(String[] args) {
//定义线程池
ScheduledExecutorService service=Executors. newScheduledThreadPool(10);
//定义第一个线程
ScheduledExecutorDemo d1=new ScheduledExecutorDemo("线程1");
//定义第二个线程
ScheduledExecutorDemo d2=new ScheduledExecutorDemo("线程2");
//执行第一个线程 从现在开始1秒钟之后,每隔2秒钟执行一次线程一
service.scheduleAtFixedRate(d1, 1, 1, TimeUnit.SECONDS);
//执行第二线程 从现在开始1秒钟之后,每隔1秒钟执行一次线程一
service.scheduleWithFixedDelay(d2, 1, 1, TimeUnit.SECONDS);
/**
* scheduleAtFixedRate()
* 创建并执行一个在给定初始延迟后首次启用的定期操作,
* 后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,
* 接着在 initialDelay + 2 * period 后执行,依此类推。如果任务的任何一个执行遇到异常,
* 则后续执行都会被取消。否则,只能通过执行程序的取消或终止方法来终止该任务。
* 如果此任务的任何一个执行要花费比其周期更长的时间,则将推迟后续执行,但不会同时执行。
*
* scheduleWithFixedDelay()
* 创建并执行一个在给定初始延迟后首次启用的定期操作,
* 随后,在每一次执行终止和下一次执行开始之间都存在给定的延迟。
* 如果任务的任一执行遇到异常,就会取消后续执行。
* 否则,只能通过执行程序的取消或终止方法来终止该任务。
*
*
*
* 以上是jdk的解释但是我自己使用jdk1.5执行时输出时
*
* 线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
*
*
*/
}
}
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* 使用线程池
*
*
* */
public class ScheduledExecutorDemo implements Runnable {
//定义参数
private String scheduledExecutorName="";
//定义构造方法
public ScheduledExecutorDemo(String name){
super();
this.scheduledExecutorName=name;
}
//重写父类Runble的run方法
public void run() {
System.out.println(scheduledExecutorName+"start...");
}
public static void main(String[] args) {
//定义线程池
ScheduledExecutorService service=Executors. newScheduledThreadPool(10);
//定义第一个线程
ScheduledExecutorDemo d1=new ScheduledExecutorDemo("线程1");
//定义第二个线程
ScheduledExecutorDemo d2=new ScheduledExecutorDemo("线程2");
//执行第一个线程 从现在开始1秒钟之后,每隔2秒钟执行一次线程一
service.scheduleAtFixedRate(d1, 1, 1, TimeUnit.SECONDS);
//执行第二线程 从现在开始1秒钟之后,每隔1秒钟执行一次线程一
service.scheduleWithFixedDelay(d2, 1, 1, TimeUnit.SECONDS);
/**
* scheduleAtFixedRate()
* 创建并执行一个在给定初始延迟后首次启用的定期操作,
* 后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,
* 接着在 initialDelay + 2 * period 后执行,依此类推。如果任务的任何一个执行遇到异常,
* 则后续执行都会被取消。否则,只能通过执行程序的取消或终止方法来终止该任务。
* 如果此任务的任何一个执行要花费比其周期更长的时间,则将推迟后续执行,但不会同时执行。
*
* scheduleWithFixedDelay()
* 创建并执行一个在给定初始延迟后首次启用的定期操作,
* 随后,在每一次执行终止和下一次执行开始之间都存在给定的延迟。
* 如果任务的任一执行遇到异常,就会取消后续执行。
* 否则,只能通过执行程序的取消或终止方法来终止该任务。
*
*
*
* 以上是jdk的解释但是我自己使用jdk1.5执行时输出时
*
* 线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
线程1start...
线程2start...
*
*
*/
}
}