前言 在开始正文前,先来看几个概念 同步异步:同步异步描述的是用户进程和内核进行的交互。同步是用户进程发起 IO 操作后需要等待或轮询内核,等内核 IO 操作完成后才能继续。异步是发起 IO 操作后,可以继续操作,等内核 IO 操作完成是会通知用户进程。 阻塞和非阻塞:阻塞和非阻塞描述的是用户线程调 ...
分类:
编程语言 时间:
2020-06-09 18:19:31
阅读次数:
99
前言:Futrue的缺点有(1)get方法会阻塞 ,(2)不支持注册回调方法 ,(3)不支持级联操作 CompletableFuture弥补了这些缺点 直接上代码: public class CompletableFutureTest { public static void main(String ...
分类:
其他好文 时间:
2020-06-09 12:32:18
阅读次数:
50
一、定义 时延队列,只要经过一段时间后才能从队列中取出。 特点: 1、无界的阻塞队列。 2、只能存放实现了Delayed接口的对象 时延就是通过getDelay获取的,getDelay<=0时,才能取出队列中的值 3、内部使用PriorityQueue , 比较的就是时延 二、使用 代码样例 pub ...
分类:
其他好文 时间:
2020-06-08 23:19:16
阅读次数:
78
1. Unix的五种I/O模型 从上往下:阻塞程度(高 低)I/O效率 (低 高) 阻塞I/O(Blocking I/O):传统的IO模型 非阻塞I/O(Non-Blocking I/O): 注意这里所说的NIO并非Java的NIO(New IO)库。 I/O多路复用(I/O Multiplexin ...
分类:
其他好文 时间:
2020-06-08 19:26:42
阅读次数:
73
NIO VS IO NIO: 面向缓存; 非阻塞的; selector IO: 面向流; 阻塞的; 无 JAVA IO Java IO: Reading data from a blocking stream. Java IO: A classic IO server design - one co ...
分类:
其他好文 时间:
2020-06-08 19:09:14
阅读次数:
59
核心部分 NIO( New Input/ Output) , 引入了一种基于通道和缓冲区的 I/O 方式,NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪,非阻塞是指线程在等待 IO 的时候,可以同时做其他任务。同步的核心就是 Selector,Selector 代替 ...
分类:
编程语言 时间:
2020-06-08 19:08:32
阅读次数:
53
1.线程模型种类 1.1. 传统阻塞 I/O 服务模型 1.2. Reactor 模式 2.传统阻塞 I/O 服务模型 2.1. 工作原理图 2.2 模型特点 2.2.1. 采用阻塞IO模式获取输入的数据 2.2.2. 每个连接都需要独立的线程完成数据的输入,业务处理,数据返回 2.3. 问题分析 ...
分类:
编程语言 时间:
2020-06-08 10:48:48
阅读次数:
96
Internet and Packets 本周开始从技术方面了解互联网发展的进程。 上世纪60到80年代,那时以专线网络为主,它有一个致命的缺点就是人们通过网络发送的信息会被占用同一条线路的其他信息阻 塞,这意味着信息传达的耗时长。针对这一问题,诞生了ARPANET,它将数据分解为多个packet, ...
分类:
Web程序 时间:
2020-06-08 09:25:04
阅读次数:
93
这里区分一下: 1、如果使用的是无界队列 LinkedBlockingQueue,也就是无界队列的话,没关 系,继续添加任务到阻塞队列中等待执行,因为 LinkedBlockingQueue 可以近乎 认为是一个无穷大的队列,可以无限存放任务 2、如果使用的是有界队列比如 ArrayBlocking ...
分类:
编程语言 时间:
2020-06-08 00:58:41
阅读次数:
344
CyclicBarrier 可以重复使用,而 CountdownLatch 不能重复使用。 Java 的 concurrent 包里面的 CountDownLatch 其实可以把它看作一个计数器, 只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器, 也就是同时只能有一个线程去减这 ...
分类:
编程语言 时间:
2020-06-08 00:36:22
阅读次数:
123