package com.tzld.piaoquan.recommend.feature.common;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author dyp
 */
public final class ThreadPoolFactory {
    private final static ExecutorService DEFAULT = new CommonThreadPoolExecutor(
            128,
            128,
            0L, TimeUnit.SECONDS,
            new LinkedBlockingQueue<>(1000),
            new ThreadFactoryBuilder().setNameFormat("DEFAULT-%d").build(),
            new ThreadPoolExecutor.AbortPolicy());
    private final static ExecutorService MULTI_GET_FEATURE = new CommonThreadPoolExecutor(
            256,
            256,
            0L, TimeUnit.SECONDS,
            new LinkedBlockingQueue<>(1000),
            new ThreadFactoryBuilder().setNameFormat("MultiGetFeaturePool-%d").build(),
            new ThreadPoolExecutor.AbortPolicy());

    public static ExecutorService defaultPool() {
        return DEFAULT;
    }

    public static ExecutorService multiGetFeaturePool() {
        return MULTI_GET_FEATURE;
    }

}
