Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.usenet.watchdog;
- import java.net.Socket;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Timer;
- import java.util.TimerTask;
- public class WatchDog {
- private final long LIMIT = 5000; // 10 seconds
- private final DateFormat DF = new SimpleDateFormat("mm 'minutes,' ss 'seconds,' S 'milliseconds'");
- private final long START = System.currentTimeMillis();
- private WorkerThread worker;
- private String timestamp() {
- return DF.format(new Date(System.currentTimeMillis() - START));
- }
- private class WorkerThread extends Thread {
- private final Object workload;
- private final long started = System.currentTimeMillis();
- public WorkerThread(final Object workload) {
- this.workload = workload;
- }
- @Override
- public void run() {
- System.out.println(timestamp() + " - (WorkerThread) started");
- System.out.println(timestamp() + " - (WorkerThread) doing stuff with " + workload);
- while (true) {
- if (System.currentTimeMillis() % 1000 == 0) {
- System.out.println(timestamp() + " - (WorkerThread) ping");
- }
- }
- }
- }
- private class WatchdogThread extends TimerTask {
- @Override
- public void run() {
- System.out.println(timestamp() + " - (WatchdogThread) checking if worker thread is over the time limit");
- if (System.currentTimeMillis() - worker.started > LIMIT) {
- System.out.println(timestamp() + " - (WatchdogThread) worker has been working too long, resetting it");
- worker.stop();
- final Object workload = worker.workload;
- worker = new WorkerThread(workload);
- worker.start();
- }
- }
- }
- public static void main(final String[] args) {
- new WatchDog().start();
- }
- private void start() {
- System.out.println(timestamp() + " - (main) Starting run");
- worker = new WorkerThread(new Socket());
- worker.start();
- final Timer timer = new Timer();
- timer.scheduleAtFixedRate(new WatchdogThread(), 1000, 863);
- }
- }
- // Output:
- 00 minutes, 00 seconds, 0 milliseconds - (main) Starting run
- 00 minutes, 00 seconds, 5 milliseconds - (WorkerThread) started
- 00 minutes, 00 seconds, 5 milliseconds - (WorkerThread) doing stuff with Socket[unconnected]
- 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 00 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 6 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 01 seconds, 869 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 02 seconds, 732 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 03 seconds, 595 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 04 seconds, 458 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 04 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 321 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 05 seconds, 321 milliseconds - (WatchdogThread) worker has been working too long, resetting it
- 00 minutes, 05 seconds, 321 milliseconds - (WorkerThread) started
- 00 minutes, 05 seconds, 322 milliseconds - (WorkerThread) doing stuff with Socket[unconnected]
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 05 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 184 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 06 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 47 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 07 seconds, 910 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 08 seconds, 773 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 09 seconds, 636 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 495 milliseconds - (WorkerThread) ping
- 00 minutes, 10 seconds, 499 milliseconds - (WatchdogThread) checking if worker thread is over the time limit
- 00 minutes, 10 seconds, 499 milliseconds - (WatchdogThread) worker has been working too long, resetting it
- 00 minutes, 10 seconds, 499 milliseconds - (WorkerThread) started
- 00 minutes, 10 seconds, 499 milliseconds - (WorkerThread) doing stuff with Socket[unconnected]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement