ScheduledExecutorService_Delay.java
/*
* Copyright@ 2011 www.egtry.com
*/
package egtry.thread;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorService_Delay {
public static void main(String[] args) {
ScheduledExecutorService scheduler=Executors.newScheduledThreadPool(1);
Worker command=new Worker();
System.out.println("scheduling at: "+new Date());
scheduler.schedule(command, 5, TimeUnit.SECONDS);
scheduler.schedule(command, 1, TimeUnit.SECONDS);
scheduler.shutdown();
}
public static class Worker implements Runnable {
private static int counter=0;
public synchronized static int incr() {
counter++;
return counter;
}
public synchronized static int decr() {
counter--;
return counter;
}
@Override
public void run() {
long id=Thread.currentThread().getId();
System.out.println("Start Worker: "+id+" total="+incr()+" at: "+new Date());
try {
Thread.sleep((int) (Math.random()*3000));
} catch (InterruptedException e) {
}
System.out.println("End Workder: "+id+" total="+decr()+"at: "+new Date()+"\n");
}
}
}