@Override
      public void finish() {
        // mark the queue end, for all workers to take
        for (int i = 0; i < n; i++) {
          if (!things.offer(TOMBSTONE())) {
            // if the queue is not able to accommodate all tombstones, then someone else has already put tombstones there, and it's safe to ignore the false result
            break;
          }
        }
      }
@Override
      public void finish()