code: public void setWorkState(WorkState workState)
     {
        this.workState =  workState;
        
        SupervisedWorker worker = null;
        for (Iterator<SupervisedWorker> i = workers.iterator(); i.hasNext();)
        {
           worker = (SupervisedWorker) i.next();
           workState.advise(worker);
        }
        
        //threads
        Thread workerThread = null;
        
        for (Iterator<SupervisedWorker> i = workers.iterator(); i.hasNext();)
        {
           worker = i.next();
           workerThread = worker.getThread();
           if(workerThread != null)
           {
              try { workerThread.join(); } catch(Exception e){}   
           }
        }
     }
docs: call workstate.adverse(workers)
  @see nyla.solutions.core.patterns.workthread.Supervisor#setWorkState(nyla.solutions.core.patterns.workthread.WorkState)