@Override
  public void run() {
    while (isRunning || areThreadsRunning()) {
      threadQueueLock.lock();
      runningThreads.forEach((diskId, fileCopyThreads) -> {
        fileCopyThreads.removeIf(fileCopyThread -> !fileCopyThread.isAlive());
      });
      threadQueueLock.unlock();
    }
    shutdownLatch.countDown();
  }
Main run loop that manages the thread pool.
Continuously monitors and removes completed threads from the running threads map
until shutdown is initiated and all threads complete.
ambry-file-transfer/src/main/java/com/github/ambry/filetransfer/DiskAwareFileCopyThreadPoolManager.java