public Fury getFury() {
    try {
      lock.lock();
      Fury fury = idleCacheQueue.poll();
      while (fury == null) {
        if (activeCacheNumber.get() < maxPoolSize) {
          addFury();
        } else {
          furyCondition.await();
        }
        fury = idleCacheQueue.poll();
      }
      activeCacheNumber.incrementAndGet();
      return fury;
    } catch (Exception e) {
      LOG.error(e.getMessage(), e);
      throw new RuntimeException(e);
    } finally {
      lock.unlock();
    }
  }
@Test
  public void testGetFuryNormal() {
    ClassLoaderFuryPooled pooled = getPooled(3, 5);
    Fury fury = pooled.getFury();
    Assert.assertNotNull(fury);
  }