package com.glxp.mipsdl.util;

import cn.hutool.core.thread.ExecutorBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingDeque;

/**
 * java线程池
 */
@Slf4j
@Component
public class ExecutorUtil {

    /**
     * 日志记录线程池
     */
    private ExecutorService log_executor;

    /**
     * 上传文件解析数据到UDI管理系统线程池
     */
    private ExecutorService upload_executor;

    @PostConstruct
    public ExecutorService getLogExecutor() {
        if (null == log_executor) {
            log.info("创建日志线程池");
            log_executor = ExecutorBuilder.create()
                    .setCorePoolSize(10)
                    .setMaxPoolSize(500)
                    .setWorkQueue(new LinkedBlockingDeque<>())
                    .build();
            log.info("日志线程池创建完成");
            return log_executor;
        }
        return log_executor;
    }

    @PostConstruct
    public ExecutorService getUploadExecutor() {
        if (null == upload_executor) {
            log.info("创建回传数据线程池");
            upload_executor = ExecutorBuilder.create()
                    .setCorePoolSize(10)
                    .setMaxPoolSize(200)
                    .setWorkQueue(new LinkedBlockingDeque<>())
                    .build();
        }
        return upload_executor;
    }

}
