code: public void await(long weight, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException {
          try {
              lock.lockInterruptibly();
              while (isPermit(weight) == false) {
                  condition.await(timeout, unit);
              }
          } finally {
              lock.unlock();
          }
      }
docs: 阻塞等待当前的weight处理,允许设置超时时间
  
  <pre>
  阻塞返回条件：
  1. 中断事件
  2. 其他线程single()的weight > 当前阻塞等待的weight
  3. 超时
  </pre>
  
  @param timeout
  @param unit
  @throws InterruptedException
  @throws TimeoutException