美文网首页
线程池配置

线程池配置

作者: Ford_ | 来源:发表于2020-05-31 16:26 被阅读0次
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

public class LocalThreadPool {
    private static LocalThreadPool mInstance;
    private ThreadPoolExecutor threadPool;
    private static int MAX_CORE_NUMBER = Runtime.getRuntime().availableProcessors();
    private LocalThreadPool() {
        threadPool = new ThreadPoolExecutor(MAX_CORE_NUMBER, 10, 60, TimeUnit.SECONDS,
                new LinkedBlockingQueue<Runnable>(), new ThreadFactory() {
                    AtomicInteger auto = new AtomicInteger(0);
                    @Override
                    public Thread newThread(Runnable r) {
                        // TODO Auto-generated method stub
                        Thread thread = new Thread(r, "crate-thread-" + auto.incrementAndGet());
                        System.out.println("create thread:" + thread.getName());
                        return thread;
                    }

                });
        threadPool.allowCoreThreadTimeOut(true);
    }

    public static LocalThreadPool getInstance() {
        if (mInstance == null) {
            synchronized (LocalThreadPool.class) {
                if (mInstance == null) {
                    mInstance = new LocalThreadPool();
                }
            }

        }
        return mInstance;
    }

    public Future<?> submit(Runnable runnable) {
        return threadPool.submit(runnable);
    }

    public int count() {
        return threadPool.getActiveCount();
    }

    public void destory() {
        threadPool.shutdown();
    }

}

相关文章

网友评论

      本文标题:线程池配置

      本文链接:https://www.haomeiwen.com/subject/wgqrzhtx.html