前言:在java道路上前行中,避免不了使用多线程,在这里做一下笔记。
- 我用到是有界队列的线程池。
- 如果需要返回值,则需要实现Callable接口,并用Future对象去接收,用.get()方法即可得到返回值
- 线程池大小maximumPoolSize我设置为8,根据自己的业务类型和服务器cpu核数去定
- 线程池对拒绝任务的处理策略,需要根据自己的业务进行选择,ThreadPoolExecutor提供了四种
代码:
package com.hzed.interactive.test;
import com.alibaba.druid.util.DaemonThreadFactory;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.util.Date;
import java.util.concurrent.*;
/**
* @Author: dayydream
* @Description: 线程池-有界队列
* @Date: 14:47 2018/10/17
* @Modified By:
*/
@Slf4j
public class ThreadDemo {
//自定义线程名称
private final static String poolName = "mypool-%d";
//等待队列
public ArrayBlockingQueue<Runnable> queue = null;
//线程执行器
private ExecutorService exc