Advertisement
Guest User

Untitled

a guest
Feb 26th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.74 KB | None | 0 0
  1. package com.usenet.watchdog;
  2.  
  3. import java.net.Socket;
  4. import java.text.DateFormat;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.Timer;
  8. import java.util.TimerTask;
  9.  
  10. public class WatchDog {
  11.     private final long              LIMIT   = 5000;                                                                                                                             // 10 seconds
  12.  
  13.     private final DateFormat    DF      = new SimpleDateFormat("mm 'minutes,' ss 'seconds,' S 'milliseconds'");
  14.     private final long              START   = System.currentTimeMillis();
  15.  
  16.     private WorkerThread            worker;
  17.  
  18.     private String timestamp() {
  19.         return DF.format(new Date(System.currentTimeMillis() - START));
  20.     }
  21.  
  22.     private class WorkerThread extends Thread {
  23.         private final Object    workload;
  24.         private final long      started = System.currentTimeMillis();
  25.  
  26.         public WorkerThread(final Object workload) {
  27.             this.workload = workload;
  28.         }
  29.  
  30.         @Override
  31.         public void run() {
  32.             System.out.println(timestamp() + " - (WorkerThread) started");
  33.             System.out.println(timestamp() + " - (WorkerThread) doing stuff with " + workload);
  34.             while (true) {
  35.                 if (System.currentTimeMillis() % 1000 == 0) {
  36.                     System.out.println(timestamp() + " - (WorkerThread) ping");
  37.                 }
  38.             }
  39.         }
  40.     }
  41.  
  42.     private class WatchdogThread extends TimerTask {
  43.         @Override
  44.         public void run() {
  45.             System.out.println(timestamp() + " - (WatchdogThread) checking if worker thread is over the time limit");
  46.             if (System.currentTimeMillis() - worker.started > LIMIT) {
  47.                 System.out.println(timestamp() + " - (WatchdogThread) worker has been working too long, resetting it");
  48.                 worker.stop();
  49.                 final Object workload = worker.workload;
  50.                 worker = new WorkerThread(workload);
  51.                 worker.start();
  52.             }
  53.         }
  54.     }
  55.  
  56.     public static void main(final String[] args) {
  57.         new WatchDog().start();
  58.     }
  59.  
  60.     private void start() {
  61.         System.out.println(timestamp() + " - (main) Starting run");
  62.         worker = new WorkerThread(new Socket());
  63.         worker.start();
  64.         final Timer timer = new Timer();
  65.         timer.scheduleAtFixedRate(new WatchdogThread(), 1000, 863);
  66.     }
  67. }
  68.  
  69.  
  70. // Output:
  71.  
  72. 00 minutes, 00 seconds, 0 milliseconds - (main) Starting run
  73. 00 minutes, 00 seconds, 5 milliseconds - (WorkerThread) started
  74. 00 minutes, 00 seconds, 5 milliseconds - (WorkerThread) doing stuff with Socket[unconnected]
  75. 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
  76. 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
  77. 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
  78. 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
  79. 00 minutes, 01 seconds, 6 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  80. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  81. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  82. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  83. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  84. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  85. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  86. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  87. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  88. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  89. 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
  90. 00 minutes, 01 seconds, 869 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  91. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  92. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  93. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  94. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  95. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  96. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  97. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  98. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  99. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  100. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  101. 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
  102. 00 minutes, 02 seconds, 732 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  103. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  104. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  105. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  106. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  107. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  108. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  109. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  110. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  111. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  112. 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
  113. 00 minutes, 03 seconds, 595 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  114. 00 minutes, 04 seconds, 458 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  115. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  116. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  117. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  118. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  119. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  120. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  121. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  122. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  123. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  124. 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
  125. 00 minutes, 05 seconds, 321 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  126. 00 minutes, 05 seconds, 321 milliseconds - (WatchdogThread) worker has been working too long, resetting it
  127. 00 minutes, 05 seconds, 321 milliseconds - (WorkerThread) started
  128. 00 minutes, 05 seconds, 322 milliseconds - (WorkerThread) doing stuff with Socket[unconnected]
  129. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  130. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  131. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  132. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  133. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  134. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  135. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  136. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  137. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  138. 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
  139. 00 minutes, 06 seconds, 184 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  140. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  141. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  142. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  143. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  144. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  145. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  146. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  147. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  148. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  149. 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
  150. 00 minutes, 07 seconds, 47 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  151. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  152. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  153. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  154. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  155. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  156. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  157. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  158. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  159. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  160. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  161. 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
  162. 00 minutes, 07 seconds, 910 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  163. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  164. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  165. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  166. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  167. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  168. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  169. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  170. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  171. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  172. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  173. 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
  174. 00 minutes, 08 seconds, 773 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  175. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  176. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  177. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  178. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  179. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  180. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  181. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  182. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  183. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  184. 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
  185. 00 minutes, 09 seconds, 636 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  186. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  187. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  188. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  189. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  190. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  191. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  192. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  193. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  194. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  195. 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
  196. 00 minutes, 10 seconds, 499 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
  197. 00 minutes, 10 seconds, 499 milliseconds - (WatchdogThread) worker has been working too long, resetting it
  198. 00 minutes, 10 seconds, 499 milliseconds - (WorkerThread) started
  199. 00 minutes, 10 seconds, 499 milliseconds - (WorkerThread) doing stuff with Socket[unconnected]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement