code: public static boolean runWithSleepThrowOnInterrupt(long milliseconds, Runnable runnable) {
  
      Assert.isTrue(milliseconds > 0, "Milliseconds [%d] must be greater than 0", milliseconds);
  
      runnable.run();
  
      if (!ThreadUtils.sleep(milliseconds, 0)) {
        throw new SleepDeprivedException(String.format("Failed to wait for [%d] millisecond(s)", milliseconds));
      }
  
      return true;
    }
docs: Runs the given {@link Runnable} object and then causes the current, calling {@link Thread} to sleep
  for the given number of milliseconds.
  
  This utility method can be used to simulate a long running, expensive operation.
  
  @param milliseconds a long value with the number of milliseconds for the current {@link Thread} to sleep.
  @param runnable {@link Runnable} object to run; must not be {@literal null}.
  @return a boolean value indicating whether the {@link Runnable} ran successfully
  and whether the current {@link Thread} slept for the given number of milliseconds.
  @throws IllegalArgumentException if milliseconds is less than equal to 0.
  @throws SleepDeprivedException if the current {@link Thread} is interrupted while sleeping.
  @see org.cp.elements.lang.concurrent.ThreadUtils#sleep(long, int)
  @see java.lang.Runnable#run()