code: private void remove(Thread t) {
          synchronized (this) {
              if (destroyed) {
                  return;
              }
              for (int i = 0 ; i < nthreads ; i++) {
                  if (threads[i] == t) {
                      System.arraycopy(threads, i + 1, threads, i, --nthreads - i);
                      // Zap dangling reference to the dead thread so that
                      // the garbage collector will collect it.
                      threads[nthreads] = null;
                      break;
                  }
              }
          }
      }
docs: Removes the specified Thread from this group. Invoking this method
  on a thread group that has been destroyed has no effect.
  
  @param  t
  the Thread to be removed