title: Java ThreadPoolExecutor and BlockingQueue to be used
body: <p>In the Oracle site (<a href="http://docs.oracle.com/javase/7/docs/api/?java/util/concurrent/ThreadPoolExecutor.html" rel="nofollow noreferrer">http://docs.oracle.com/javase/7/docs/api/?java/util/concurrent/ThreadPoolExecutor.html</a>) under Queuing section, its mentioned that "If corePoolSize or more threads are running, the Executor always prefers queuing a request rather than adding a new thread."</p>
  
  <p>Lot of our code have corePoolSize as 1 and maximumPoolSize are like 10 or 20. 
  (1) Is it a bad practice? or rather not an optimal way to use ThreadPool's?
  (2) Would you recommend have corePoolSize and maximumPoolSize value be same when creating a ThreadPoolExecutor?</p>
  
  <p>Another question is with respect to usage of a BlockingQueue while creating a ThreadPoolExecutor - between LinkedBlockingQueue or ConcurrentLinkedQueue? I was looking more from the locking and performance point-of-view? Though running a test proves, inserting in a concurrentLinkedQueue is quite fast compared to other. Any thoughts?</p>
  
  <p>Edited:</p>
  
  <p>The first part has been answered in various questions. The one I liked
  <a href="https://stackoverflow.com/questions/19528304/how-to-get-the-threadpoolexecutor-to-increase-threads-to-max-before-queueing?rq=1">How to get the ThreadPoolExecutor to increase threads to max before queueing?</a></p>