/** {@inheritDoc} <br> */
  @Override
  protected <T> Callable<T> toCallable(final SlideCallback<T> task) {
    Args.check(0 < threadNum, "'ThreadNum' cannot be less than zero.");
    return new Callable<T>() {
      @Override
      public T call() throws Exception {
        int exp = (int) TimeUnit.MILLISECONDS.toSeconds(intervalMilliseconds) - 1; // 早1秒失效
        for (int i = 1; i <= threadNum; i++) {
          String key = keyPrefix + i;
          boolean add = cacheService.add(key, 1, exp);
          if (add) return task.call();
        }

        Thread.sleep(intervalMilliseconds); // TODO 寻找更好的方案
        return call();
      }
    };
  }
 /** @param intervalMilliseconds 要设置的 intervalMilliseconds */
 public void setIntervalMilliseconds(long intervalMilliseconds) {
   Args.check(
       0 < intervalMilliseconds, "'intervalMilliseconds' should be a value greater than zero.");
   this.intervalMilliseconds = intervalMilliseconds;
 }