blockingQueue =
(queueLength == -1 ? new DefaultWaterMarkQueue<Runnable>(waterMark)
: new DefaultWaterMarkQueue<Runnable>(waterMark, queueLength));
executor = new WaterMarkExecutor(
core, max, keepAlive,
TimeUnit.SECONDS,
(WaterMarkQueue<Runnable>) blockingQueue,
new NativeThreadFactory(new ThreadGroup(threadGroupName), threadGroupId),
rejectedExecutionHandler);