code: @Override
  	public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
  		int counts = rejectCounts.incrementAndGet();
  		if(logger.isWarnEnabled()) {
  			int t = counts % 100;
  			if (t == 0) {
  					logger.warn(new StringBuilder().append("Task[").append(message).append("] blocked ").append(counts).append(" times.").toString());
  			}
  		}
  //
  		try {
  			if(sliceScrollBlockedWaitTimeout <= 0) {
  				executor.getQueue().put(r);
  			}
  			else {
  				boolean result = executor.getQueue().offer(r, this.sliceScrollBlockedWaitTimeout, TimeUnit.MILLISECONDS);
  				if(!result){
  					throw new RejectedExecutionException(new StringBuilder().append("Task[").append(message).append("] rejected: wait timeout after ")
  							.append(sliceScrollBlockedWaitTimeout).append(" MILLISECONDS.").toString());
  				}
  			}
  		} catch (InterruptedException e1) {
  			throw new RejectedExecutionException(e1);
  		}
  	}
docs: Always log per 1000 mults rejects.
  @param r
  @param executor