code: public static InstrumentedExecutorService newCachedThreadPool(MetricRegistry registry, String name) {
          return new InstrumentedExecutorService(Executors.newCachedThreadPool(), registry, name);
      }
docs: Creates an instrumented thread pool that creates new threads as needed, but
  will reuse previously constructed threads when they are
  available.  These pools will typically improve the performance
  of programs that execute many short-lived asynchronous tasks.
  Calls to {@code execute} will reuse previously constructed
  threads if available. If no existing thread is available, a new
  thread will be created and added to the pool. Threads that have
  not been used for sixty seconds are terminated and removed from
  the cache. Thus, a pool that remains idle for long enough will
  not consume any resource. Note that pools with similar
  properties but different details (for example, timeout parameters)
  may be created using {@link ThreadPoolExecutor} constructors.
  
  @param registry the {@link MetricRegistry} that will contain the metrics.
  @param name     the (metrics) name for this executor service, see {@link MetricRegistry#name(String, String...)}.
  @return the newly created thread pool
  @see Executors#newCachedThreadPool()