/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.linkedin.pinot.transport.config; import org.apache.commons.configuration.Configuration; public class ThreadPoolConfig { /** the number of threads to keep in the pool, even if they are idle **/ public static final String CORE_POOL_SIZE_KEY = "corePoolSize"; /** the maximum number of threads to allow in the pool **/ public static final String MAX_POOL_SIZE_KEY = "maxPoolSize"; /** * when the number of threads is greater than * the core, this is the maximum time that excess idle threads * will wait for new tasks before terminating. */ public static final String IDLE_TIMEOUT_MS_KEY = "idleTimeoutMs"; //TODO: Need to revisit if they are good private static final int DEFAULT_CORE_POOL_SIZE = 10; private static final int DEFAULT_MAX_POOL_SIZE = 10; private static final long DEFAULT_IDLE_TIMEOUT_MS = 12 * 60L * 60 * 1000L; // 12 hours private int _corePoolSize; private int _maxPoolSize; private long _idleTimeoutMs; public ThreadPoolConfig() { _corePoolSize = DEFAULT_CORE_POOL_SIZE; _maxPoolSize = DEFAULT_MAX_POOL_SIZE; _idleTimeoutMs = DEFAULT_IDLE_TIMEOUT_MS; } public void init(Configuration cfg) { if (cfg.containsKey(CORE_POOL_SIZE_KEY)) { _corePoolSize = cfg.getInt(CORE_POOL_SIZE_KEY); } if (cfg.containsKey(MAX_POOL_SIZE_KEY)) { _maxPoolSize = cfg.getInt(MAX_POOL_SIZE_KEY); } if (cfg.containsKey(IDLE_TIMEOUT_MS_KEY)) { _idleTimeoutMs = cfg.getLong(IDLE_TIMEOUT_MS_KEY); } } public int getCorePoolSize() { return _corePoolSize; } public int getMaxPoolSize() { return _maxPoolSize; } public long getIdleTimeoutMs() { return _idleTimeoutMs; } }