![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
MYws.
曾许人间第一流
展开
-
线程池中到底创建多少线程合适?
文章目录@[TOC]1.线程池中线程数目不当造成的问题2.如何创建线程数目合适的线程池 1.线程池中线程数目不当造成的问题 过小会导致程序不能充分地利用cpu资源,容易导致饥饿。 过大会导致更多的线程上下文切换,占用更多内存。 2.如何创建线程数目合适的线程池 想要创建合适线程数目的线程最主要的参考因素便是我们程序的类型,不同类型的程序有不同的对策。 2.1 cpu密集型运算 对于cpu运算密集的程序,我们通常采用cpu核心数+1能够实现最优的cpu利用率,为什么不是cpu核心数个线程,是保证当前线程原创 2020-08-06 14:50:10 · 581 阅读 · 0 评论 -
自定义线程池代码实现--2
文章目录原理代码实现测试结果 原理 代码实现 测试类 //自定义线程池 public class TestPool { public static void main(String[] args) { //test ThreadPool threadPool = new ThreadPool(3, 5, TimeUnit.MICROSECONDS, 6); for (int i = 0; i < 10; i++) { int j = i;原创 2020-07-27 11:25:51 · 163 阅读 · 0 评论 -
自定义线程池代码实现--1
//连接池 public class Pool { //定义线程池的大小 private final int poolSize; //连接对象数组 private Connection[] connections; //连接池中连接对象状态 0:可用 1:不可用 private AtomicIntegerArray states; //初始化连接池对象 public Pool(int poolSize) { this.poolSize = poolSize; for (int i =原创 2020-07-24 15:57:10 · 99 阅读 · 0 评论 -
异步生产者-消费者设计模式(多线程设计模式)
异步生产者-消费者设计模式介绍使用场景代码实现执行结果 介绍 生产者负责产生数据,将数据存入消息队列,不关系数据该如何处理,当消息队列满时不再生产数据 消费者负责从消息队列中取数据,对数据进行处理,当消息队列为空时,停止消费 消息队列用来平衡生产和消费的消息资源,消费队列有容量限制 使用场景 JDK中各种阻塞队列 代码实现 主类 import java.util.LinkedList; //异步生产者/消费者模式 public class ProducerConsumerModel { pub原创 2020-07-16 10:58:32 · 190 阅读 · 0 评论