Chagnge TThreadPoolServer in Java to use SynchronousQueue by default

Summary: Read the documentation on ThreadPoolExecutor. It's very confusing. Basically, what we want is a queue that always defers to the threadpool and will always create a new thread to do work. We never want the queue to take priority over the thread pool by default.

Reviewed By: dreiss

Test Plan: Run a Java Thrift server


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665419 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/java/src/server/TThreadPoolServer.java b/lib/java/src/server/TThreadPoolServer.java
index 94eb5a6..343af6b 100644
--- a/lib/java/src/server/TThreadPoolServer.java
+++ b/lib/java/src/server/TThreadPoolServer.java
@@ -18,14 +18,14 @@
 import com.facebook.thrift.transport.TTransportFactory;
 
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 
 /**
  * Server which uses Java's built in ThreadPool management to spawn off
- * a worker pool that 
+ * a worker pool that
  *
  * @author Mark Slee <mcslee@facebook.com>
  */
@@ -50,7 +50,7 @@
 
   public TThreadPoolServer(TProcessor processor,
                            TServerTransport serverTransport) {
-    this(processor, serverTransport, 
+    this(processor, serverTransport,
          new TTransportFactory(), new TTransportFactory(),
          new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(),
          new Options());
@@ -58,7 +58,7 @@
 
   public TThreadPoolServer(TProcessorFactory processorFactory,
           TServerTransport serverTransport) {
-    this(processorFactory, serverTransport, 
+    this(processorFactory, serverTransport,
          new TTransportFactory(), new TTransportFactory(),
          new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(),
          new Options());
@@ -77,7 +77,7 @@
                            TServerTransport serverTransport,
                            TTransportFactory transportFactory,
                            TProtocolFactory protocolFactory) {
-    this(processor, serverTransport, 
+    this(processor, serverTransport,
          transportFactory, transportFactory,
          protocolFactory, protocolFactory,
          new Options());
@@ -87,13 +87,13 @@
           TServerTransport serverTransport,
           TTransportFactory transportFactory,
           TProtocolFactory protocolFactory) {
-    this(processorFactory, serverTransport, 
+    this(processorFactory, serverTransport,
          transportFactory, transportFactory,
          protocolFactory, protocolFactory,
          new Options());
   }
 
-  
+
   public TThreadPoolServer(TProcessor processor,
           TServerTransport serverTransport,
           TTransportFactory inputTransportFactory,
@@ -106,7 +106,7 @@
          inputProtocolFactory, outputProtocolFactory,
          options);
   }
-  
+
   public TThreadPoolServer(TProcessorFactory processorFactory,
                            TServerTransport serverTransport,
                            TTransportFactory inputTransportFactory,
@@ -114,14 +114,14 @@
                            TProtocolFactory inputProtocolFactory,
                            TProtocolFactory outputProtocolFactory,
                            Options options) {
-    super(processorFactory, serverTransport, 
+    super(processorFactory, serverTransport,
           inputTransportFactory, outputTransportFactory,
           inputProtocolFactory, outputProtocolFactory);
 
     executorService_ = null;
 
-    LinkedBlockingQueue<Runnable> executorQueue =
-      new LinkedBlockingQueue<Runnable>();
+    SynchronousQueue<Runnable> executorQueue =
+      new SynchronousQueue<Runnable>();
 
     executorService_ = new ThreadPoolExecutor(options.minWorkerThreads,
                                               options.maxWorkerThreads,
@@ -153,7 +153,7 @@
           ++failureCount;
           ttx.printStackTrace();
         }
-      }     
+      }
     }
 
     executorService_.shutdown();