From 239632ec2f56c1baeb86410c1912872e07ded031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=90=E5=92=8C=E6=94=BE=E5=AE=BD?= <849421294godw@gmail.com> Date: Sun, 24 Mar 2024 02:03:53 +0800 Subject: [PATCH] fix error link. --- docs/java/java-concurrent.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/java/java-concurrent.md b/docs/java/java-concurrent.md index bb62dcc..8c2d038 100644 --- a/docs/java/java-concurrent.md +++ b/docs/java/java-concurrent.md @@ -1226,6 +1226,10 @@ Future接口主要包括5个方法: 4. isDone()方法判断当前方法是否完成 5. isCancel()方法判断当前方法是否取消 +> 参考链接:https://blog.csdn.net/u014209205/article/details/80598209 + +![](http://img.topjavaer.cn/img/20220612101342.png) + ## select、poll、epoll之间的区别 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 @@ -1235,7 +1239,3 @@ select的时间复杂度O(n)。它仅仅知道有I/O事件发生了,却并不 poll的时间复杂度O(n)。poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的. epoll的时间复杂度O(1)。epoll可以理解为event poll,不同于忙轮询和无差别轮询,epoll会把哪个流发生了怎样的I/O事件通知我们。所以我们说epoll实际上是事件驱动的。 - -> 参考链接:https://blog.csdn.net/u014209205/article/details/80598209 - -![](http://img.topjavaer.cn/img/20220612101342.png)