@Override
 public void run() {
   try {
     while (!boss.isEnough) {
       Object[] objs = boss.getFromBuffer();
       int step = objs.length / refs;
       for (int i = 0; i < refs; i += step) {
         objs[i] = boss.getRandomObject();
       }
       boss.counter++;
     }
   } catch (Throwable t) {
     t.printStackTrace(System.out);
     boss.errorMessage = t.getMessage();
   }
 }
 @Override
 public void run() {
   try {
     while (!boss.isEnough) {
       Thread.sleep(sleepTime);
       boss.windowStart += shift;
       for (int i = 0; i < boss.OLD; i++) {
         Object[] objs = boss.BUFFER.get(i);
         for (int j = 0; j < objs.length; j++) {
           objs[j] = null;
         }
       }
       if (!WB.g1InConcurrentMark()) {
         System.out.println("%% start CMC");
         WB.g1StartConcMarkCycle();
       } else {
         System.out.println("%% CMC is already in progress");
       }
     }
   } catch (Throwable t) {
     t.printStackTrace(System.out);
     boss.errorMessage = t.getMessage();
   }
 }