Announcement Announcement Module
Collapse
No announcement yet.
semaphore inside TimeReminder Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • semaphore inside TimeReminder

    Hi,

    I am using TimeReminder to repeat a thread several times in a specific start date. Ther thread is emplemented with Semaphore and with a simple execution without time looping it works good! this is the code of the simple execution:
    Code:
    public class simpleTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		for (int i = 1; i < 5; i++) {
    			Processor processor = new Processor("THREAD-" + i);
    			new Thread(processor).start();
    		}
    
    	}
    
    }
    and here is the console result:
    12:43:39 Complex processing started for THREAD-2.
    12:43:39 Complex processing started for THREAD-4.
    12:43:39 Complex processing started for THREAD-3.
    12:43:40 Processing completed by THREAD-4.
    12:43:40 Complex processing started for THREAD-1.
    12:43:40 Processing completed by THREAD-2.
    12:43:41 Processing completed by THREAD-3.
    12:43:44 Processing completed by THREAD-1.
    basically, it allows just 3 threads to be executed at the same time, and I loop for 5 threads. It works good but with the TimeReminder, when I want to add a new date and simple interval, with this code:
    Code:
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class SemaphoreTest {
    
    	// static Date now = new Date();
    	public static Date endDate;
    	public static Date startDate;
    	public static int numEquipment = 10;
    
    	DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    	{
    		try {
    			startDate = dateFormat.parse("05/26/2011 11:10:12");
    			endDate = dateFormat.parse("05/28/2011 12:10:12");
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    	}
    
    	static class RemindTask extends TimerTask {
    
    		// init endDate (schedule)
    		@Override
    		public void run() {
    			if (SemaphoreTest.endDate.after(new Date())) {
    				for (int i = 1; i < numEquipment; i++) {
    					Processor processor = new Processor("THREAD-" + i);
    					new Thread(processor).start();
    				}
    			} else {
    				System.exit(0);
    			}
    		}
    	}
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Timer timer;
    		timer = new Timer();
    		timer.schedule(new RemindTask(), SemaphoreTest.startDate, 20 * 1000);
    
    	}
    
    }
    it gives me an error that I was not able to fix
    Exception in thread "main" java.lang.NullPointerException
    at java.util.Timer.schedule(Timer.java:257)
    at SemaphoreTest.main(SemaphoreTest.java:49)
    Hope someone can help!
Working...
X