線程池構造方法不能控制任務的超時時間,
java.util.concurrent.ThreadPoolExecutor#ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>)
long, java.util.concurrent.TimeUnit設置的是超過core數量的線程在沒有任務時最大的idleTime
但是執行任務時可以使用Future類來控制超時時間
AbstractExecutorService中invokeAll,invokeAny可以指定超時時間 (沒有完成的task會被cancel,並拋出interrupted異常), 但其本質還是使用Future.cancle
這里不是對單個task的超時控制

另起一個SchedulerThread監控FutureTask是否超時,@Hystrix的超時原理
http://westyi.iteye.com/blog/714935
cancle不一定成功,無法判端里面的事務是否真的失敗, 只是在確定超時后 返回了一個備用對象
Executors 返回的線程池對象的弊端如下:
1)FixedThreadPool 和 SingleThreadPool: 允許的請求隊列長度為 Integer.MAX_VALUE,可能會堆積大量的請求,從而導致 OOM。
2)CachedThreadPool 和 ScheduledThreadPool: 允許的創建線程數量為 Integer.MAX_VALUE,可能會創建大量的線程,從而導致 OOM。

線程Thread
線程工廠 ThreadFactory
線程池 正確的概念是指ThreadPoolExecutor, 注意父類AbstractExecutorService, ExecutorService中超時方法的使用
