private void addWorker() {
        synchronized (this.workers) {
            if (this.workers.size() >= super.getMaximumPoolSize()) {
                return;
            }

            // Create a new worker, and add it to the thread pool
            final Worker worker = new Worker();
            final Thread thread = this.getThreadFactory().newThread(worker);

            // As we have added a new thread, it's considered as idle.
            this.idleWorkers.incrementAndGet();

            // Now, we can start it.
            thread.start();
            this.workers.add(worker);

            if (this.workers.size() > this.largestPoolSize) {
                this.largestPoolSize = this.workers.size();
            }
        }
    }
Add a new thread to execute a task, if needed and possible. It depends on
the current pool size. If it's full, we do nothing.
metamorphosis-server-wrapper/src/main/java/com/taobao/metamorphosis/gregor/slave/OrderedThreadPoolExecutor.java