Example #1
0
 /** Run the thread. */
 @Override
 public void run() {
   logger.info("ready, myId = " + myId);
   Runnable job;
   int done = 0;
   long time = 0;
   long t;
   boolean running = true;
   while (running) {
     try {
       logger.debug("looking for a job");
       job = pool.getJob();
       working = true;
       if (debug) {
         logger.info("working " + myId + " on " + job);
       }
       t = System.currentTimeMillis();
       // send and wait, like rmi
       try {
         if (job instanceof ShutdownRequest) {
           ec.send(myId, ExecutableServer.STOP);
         } else {
           ec.send(myId, job);
         }
         logger.info("send " + myId + " at " + ec + " send job " + job);
       } catch (IOException e) {
         e.printStackTrace();
         logger.info("error send " + myId + " at " + ec + " e = " + e);
         working = false;
       }
       // job.run();
       Object o = null;
       try {
         if (working) {
           logger.info("waiting " + myId + " on " + job);
           o = ec.receive(myId);
           logger.info("receive " + myId + " at " + ec + " send job " + job + " received " + o);
         }
       } catch (IOException e) {
         logger.info("receive exception " + myId + " send job " + job + ", " + e);
         // e.printStackTrace();
         running = false;
       } catch (ClassNotFoundException e) {
         logger.info("receive exception " + myId + " send job " + job + ", " + e);
         // e.printStackTrace();
         running = false;
       } finally {
         logger.info(
             "receive finally "
                 + myId
                 + " at "
                 + ec
                 + " send job "
                 + job
                 + " received "
                 + o
                 + " running "
                 + running);
       }
       working = false;
       time += System.currentTimeMillis() - t;
       done++;
       if (debug) {
         logger.info("done " + myId + " with " + o);
       }
     } catch (InterruptedException e) {
       running = false;
       Thread.currentThread().interrupt();
     }
   }
   logger.info("terminated " + myId + " , done " + done + " jobs in " + time + " milliseconds");
 }