docs: public void stopThreads()
      {
          if (threadMap.isEmpty())
          {
              throw new IllegalStateException("threads are already interrupted");
          }
          lock.lock();
          try
          {
              Thread currentThread = Thread.currentThread();
              for (Thread thread : threadMap.values())
              {
                  if (!currentThread.equals(thread))
                  {
                      thread.interrupt();
                  }
              }
              threadMap.clear();
              semaphoreMap.clear();
          }
          finally
          {
              lock.unlock();
          }
      }