code: private synchronized ProgressMonitor getWorkerProgressMonitor() {
      ProgressMonitor monitor;
      if (numProgressMonitors < maxConcurrentWorkers) {
        String title = String.format("Worker (%d)", numProgressMonitors++);
        monitor = new PermanentProgressMonitor(monitorFactory.createProgressMonitor(title));
      } else {
        monitor = workerMonitorQueue.remove();
      }
      return monitor;
    }
docs: Gets an available <code>ProgressMonitor</code> to use for the next task.
  @return An available <code>ProgressMonitor</code>.