1 23 24 package com.sun.enterprise.admin.servermgmt.pe; 25 26 public final class InstanceTimer implements Runnable 27 { 28 private final int timeOutSeconds; 29 private final TimerCallback callBack; 30 private final int startAfterSeconds; 31 private boolean timeOutReached; 32 private long startTime; 33 34 public InstanceTimer(int timeOutSeconds, 35 int startAfterSeconds, 36 TimerCallback callBack) 37 { 38 this.timeOutSeconds = timeOutSeconds; 39 this.startAfterSeconds = startAfterSeconds; 40 this.callBack = callBack; 41 this.timeOutReached = false; 42 } 43 44 public void run() 45 { 46 startTime = System.currentTimeMillis(); 47 try 48 { 49 Thread.currentThread().sleep(startAfterSeconds * 1000); 50 while (!timeOutReached() && !callBack.check()) 51 { 52 try 53 { 54 Thread.currentThread().sleep(1000); 55 computeTimeOut(); 56 } 57 catch (InterruptedException ie) 58 { 59 timeOutReached = true; 61 } 62 } 63 } 64 catch (Exception e) 65 { 66 timeOutReached = true; 68 } 69 } 70 71 private boolean timeOutReached() 72 { 73 return timeOutReached; 74 } 75 76 private void computeTimeOut() 77 { 78 long currentTime = System.currentTimeMillis(); 79 timeOutReached = 80 ((currentTime - startTime) >= (timeOutSeconds * 1000)); 81 } 82 } | Popular Tags |