Java Thread Executor Create getExecutorService(int maximumPoolSize, int corePoolSize, long keepAliveTime, final String name, RejectedExecutionHandler rejectionPolicy)

Here you can find the source of getExecutorService(int maximumPoolSize, int corePoolSize, long keepAliveTime, final String name, RejectedExecutionHandler rejectionPolicy)

Description

Creates an ExecutorService object backed by a thread pool.

License

Open Source License

Parameter

Parameter Description
maximumPoolSize Maximum number of concurrent threads.
corePoolSize Minimum number of concurrent threads to maintain in the pool, even if they are idle.
keepAliveTime Time, in seconds, for which to keep alive unused threads.
name The name of the threads.
rejectionPolicy The rejection policy to enforce.

Return

An executor service preconfigured.

Declaration

public static ExecutorService getExecutorService(int maximumPoolSize, int corePoolSize, long keepAliveTime,
        final String name, RejectedExecutionHandler rejectionPolicy) 

Method Source Code

//package com.java2s;
/*//from   w  w  w.  jav  a  2 s.co m
// This software is subject to the terms of the Eclipse Public License v1.0
// Agreement, available at the following URL:
// http://www.eclipse.org/legal/epl-v10.html.
// You must accept the terms of that agreement to use this software.
//
// Copyright (C) 2001-2005 Julian Hyde
// Copyright (C) 2005-2015 Pentaho and others
// All Rights Reserved.
*/

import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;

public class Main {
    /**
     * Creates an {@link ExecutorService} object backed by a thread pool.
     * @param maximumPoolSize Maximum number of concurrent
     * threads.
     * @param corePoolSize Minimum number of concurrent
     * threads to maintain in the pool, even if they are
     * idle.
     * @param keepAliveTime Time, in seconds, for which to
     * keep alive unused threads.
     * @param name The name of the threads.
     * @param rejectionPolicy The rejection policy to enforce.
     * @return An executor service preconfigured.
     */
    public static ExecutorService getExecutorService(int maximumPoolSize, int corePoolSize, long keepAliveTime,
            final String name, RejectedExecutionHandler rejectionPolicy) {
        // We must create a factory where the threads
        // have the right name and are marked as daemon threads.
        final ThreadFactory factory = new ThreadFactory() {
            private final AtomicInteger counter = new AtomicInteger(0);

            public Thread newThread(Runnable r) {
                final Thread t = Executors.defaultThreadFactory().newThread(r);
                t.setDaemon(true);
                t.setName(name + '_' + counter.incrementAndGet());
                return t;
            }
        };

        // Ok, create the executor
        final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize,
                maximumPoolSize > 0 ? maximumPoolSize : Integer.MAX_VALUE, keepAliveTime, TimeUnit.SECONDS,
                // we use a sync queue. any other type of queue
                // will prevent the tasks from running concurrently
                // because the executors API requires blocking queues.
                // Important to pass true here. This makes the
                // order of tasks deterministic.
                // TODO Write a non-blocking queue which implements
                // the blocking queue API so we can pass that to the
                // executor.
                new LinkedBlockingQueue<Runnable>(), factory);

        // Set the rejection policy if required.
        if (rejectionPolicy != null) {
            executor.setRejectedExecutionHandler(rejectionPolicy);
        }

        // Done
        return executor;
    }
}

Related

  1. getExecutor()
  2. getExecutor(int numTasks, int maxThreads)
  3. getExecutorService()
  4. getExecutorService()
  5. getExecutorService()
  6. getExecutorService(int poolSize)
  7. getExecutorService(String usage)
  8. getExecutorServiceWithThreadName(final String threadNamePrefix, int threadCount)
  9. getExecutorThreadId(final ExecutorService executor)