| Refresh | Home EGTry.com

delay execution of task in separate thread


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



Output

scheduling at: Mon Oct 03 11:24:31 CDT 2011
Start Worker: 8 total=1 at: Mon Oct 03 11:24:32 CDT 2011
End Workder: 8 total=0at: Mon Oct 03 11:24:33 CDT 2011

Start Worker: 8 total=1 at: Mon Oct 03 11:24:36 CDT 2011
End Workder: 8 total=0at: Mon Oct 03 11:24:37 CDT 2011