code: public static ExecutorService newPooledExecutor(int newPoolSize, String poolName, boolean useDaemonThreads)
      {
          return new ThreadPoolExecutor(
                  newPoolSize,
                  newPoolSize,
                  0L,
                  TimeUnit.MILLISECONDS,
                  new SynchronousQueue<Runnable>(),
                  new CollectionsThreadFactory(poolName, useDaemonThreads),
                  new ThreadPoolExecutor.CallerRunsPolicy());
      }
docs: Returns a brand new ExecutorService using the specified poolName with the specified maximum thread pool size. The
  same poolName may be used more than once resulting in multiple pools with the same name.
  <p>
  The pool will be initialised with newPoolSize threads.  If that number of threads are in use and another thread
  is requested, the pool will reject execution and the submitting thread will execute the task.