提供两种方式线程池工具类
方式一为调用Executor.execute(r)方法;
方式二为重写 new ThreadPoolExecutor()方法 自定义线程参数
package org.deyi.sc.util;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.deyi.sc.controller.FileFtpController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @program: syscore
* @description: 线程池工具类
* @author: dfd
* @create: 2021-03-16 17:42
*/
public class ThreadPoolUtils {
private static final Logger log = LoggerFactory.getLogger(ThreadPoolUtils.class);
/**
* ExecutorService 线程池
* 使用方式一 ThreadPoolUtils.submit();
*/
private static ExecutorService pool = null;
/*初始化线程池*/
public static void init() {
if (pool == null) {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-call-runner-%d").build();
pool = new ThreadPoolExecutor(5, 200, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
}
}
/**
* 提交任务执行
*
* @param r
* @return void
* @throws
* @author dfd
* @date 2021/3/18 13:51
*/
public static void submit(Runnable r) {
init();
pool.execute(r);
}
/**
* 关闭线程池
*
* @param
* @return void
* @throws
* @author dfd
* @date 2021/3/18 13:50
*/
public static void unInit() {
if (pool == null || pool.isShutdown()) {
r