推荐系列:随笔分类 - Java并发编程
做项目涉及到的并发,先快速了解。之后再补充基础。
import java.util.concurrent.TimeUnit;//√ import java.util.concurrent.atomic.AtomicLong;//√ import java.util.concurrent.ConcurrentHashMap;//√ import java.util.concurrent.ArrayBlockingQueue;//√ import java.util.concurrent.ExecutorService;//√ import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ThreadPoolExecutor;//√ import java.util.concurrent.atomic.AtomicInteger;//√ import java.util.Timer;//√ import java.util.TimerTask;//√ import com.lmax.disruptor.*; import com.lmax.disruptor.EventFactory; import com.lmax.disruptor.WorkHandler;
并发集合:
java多线程之并发集合 ArrayBlockingQueue
ConcurrentHashMap原理分析 ConcurrentHashMap总结
定时任务 Timer类
ExecutorService readThreadPool= new ThreadPoolExecutor(config.getReaderThreadPoolSize(), config.getReaderThreadPoolMaxSize(), THREAD_POOL_ACTIVE_TIME, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(config.getReaderTaskQueueSize()), r -> { Thread thread = new Thread(r); thread.setName("xdict-read-thread-" + this.dictTypeEnum + "-" + readThreadSequence.getAndIncrement()); return thread; },new ThreadPoolExecutor.CallerRunsPolicy());
继承关系
构造函数的参数说明:
核心池大小:开始创建线程池时,默认情况,线程池中的线程数为零,当有任务来之后,创建一个线程执行任务,当线程池中的线程数达到核心池大小时,将任务放到缓存队列中。
maximumPoolSize:线程池最大线程数,这个参数也是一个非常重要的参数,它表示在线程池中最多能创建多少个线程;
解决java.util.concurrent.RejectedExecutionException
java多线程 ThreadPoolExecutor 策略的坑