发现问题
1 | Semaphore semaphore = new Semaphore(nThread);//定义几个许可 |
1 | Semaphore semaphore = new Semaphore(nThread);//定义几个许可 |
线程池的在 Java并发中使用最多的一种手段,也是性能和易用性相对来说比较均衡的方式,下面我们就一起探索先线程池的原理。
对于线程池的使用,在这篇文章中就不过多的赘述,首先我们先看下线程池的分配线程的逻辑。
我们知道,在创建线程池的有 7 个核心的参数:
corePoolSize:核心线程数
maximumPoolSize:最大线程数
keepAliveTime:空闲线程存活时间
TimeUnit: 单位
workQueue:阻塞队列
ThreadFactory: 线程工厂
RejectedExecutionHandler: 拒绝策略
在这 7 个参数中,其中我们最重要的几个参数是 corePoolSize,maximumPoolSize,workQueue ,这三个参数来决定线程池主要的线程数和任务队列长度。
具体的流程图如下(图片来自网上,侵删):
Update your browser to view this website correctly.&npsb;Update my browser now