![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 91
zhangkaixuan456
这个作者很懒,什么都没留下…
展开
-
从Java BIO到NIO再到多路复用,看这篇就够了
实际上,它是一个索引值,指向一个文件记录表,该表记录内核为每一个进程维护的文件记录信息。看下入参,需要用户主动传入要监视的文件描述符数量,可读文件描述符集合,可写文件描述符集合,异常文件描述符集合等入参,实际上就干了一件事,以前由用户态去循环遍历所有客户端产生系统调用(如果10k个socket,需要产生10k个系统调用),改成了由内核遍历,如果select模式,只需10系统调用(因为select最大支持传入1024个文件描述符),如果是poll模式(不限制文件描述符数量),则只需1次系统调用。原创 2023-06-06 12:51:22 · 177 阅读 · 0 评论 -
executors,ThreadPoolExecutor 详解线程池——5000字、12 连环炮、一张图
目录线程池整体图1、为什么要创建线程池?2、创建线程池有哪些方式?3、Executors能创建几种常用线程池?4、线程池有哪些参数?5,能说说线程池原理吗?6、线程池有哪些拒绝策略?7、线程池中使用到了阻塞队列,那你知道有哪些阻塞队列?8、线程池中的核心线程如何设置呢?9、知道线程池有哪些状态吗?10、线程池中的线程是如何复用的?11、Java线程池中submit() 和 execute()方法有什么区别?12、在工作中,有使用过线程池吗今天我给大家总原创 2022-03-24 10:36:47 · 234 阅读 · 0 评论 -
CompletableFuture——20个使用的例子
这篇文章介绍 Java 8 的 CompletionStage API和它的标准库的实现 CompletableFuture。API通过例子的方式演示了它的行为,每个例子演示一到两个行为。既然CompletableFuture类实现了CompletionStage接口,首先我们需要理解这个接口的契约。它代表了一个特定的计算的阶段,可以同步或者异步的被完成。你可以把它看成一个计算流水线上的一个单元,最终会产生一个最终结果,这意味着几个CompletionStage可以串联起来,一个完成的阶段可以触发下一阶原创 2021-12-30 10:09:21 · 2367 阅读 · 0 评论 -
CopyOnWriteArrayList原理解析
CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。如图所示是CopyOnWriteArrayList的类图结构:上图有个小瑕疵,lock 是 包级私有,而不是 protected。能够看到,每个CopyOnWriteArrayList对象都有一个array数组用来存放具体元素,而ReenTrantLock则用来保证只有一个线程对Array进行修改。ReenTrantLock本身是一个独占锁,原创 2021-05-27 00:24:10 · 378 阅读 · 0 评论