- 2024-09-28Reactor模式
Reactor模式许多高性能的服务器软件离不开Reactor模式.像高性能缓存Redis,高性能web服务器Nginx,高性能的网络组件Netty,高性能的消息中间件Kafka,RocketMQ等.那什么是Reactor模式呢?借用DougLea大师的话来说,就是:Reactor模式由Reactor线程,Handles处理器两大角色组成,它们的
- 2024-07-22NIO的三大核心组件详解,充分说明为什么NIO在网络IO中拥有高性能!
一、写在开头我们在上一篇博文中提到了JavaIO中常见得三大模型(BIO,NIO,AIO),其中NIO是我们在日常开发中使用比较多的一种IO模型,我们今天就一起来详细的学习一下。在传统的IO中,多以这种同步阻塞的IO模型为主,程序发起IO请求后,处理线程处于阻塞状态,直到请求的IO数据从内核空间拷贝到用
- 2024-04-08并发编程之Java中Selector
系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。Selector提供选择执行已经就绪的任务的能力,使得多元I/O成为可能,就绪选
- 2024-02-05Java NIO
NIO简介在传统的JavaI/O模型(BIO)中,I/O操作是以阻塞的方式进行的。也就是说,当一个线程执行一个I/O操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一个线程,而线程的创建和切换都是有开销的。为了解决这个问题,在
- 2023-12-18网络编程之IO模型
我们讨论网络编程中的IO模型时,需要先明确什么是IO以及IO操作为什么在程序开发中是很关键的一部分,首先我们看下IO的定义。IO的定义IO操作(Input/Output操作)是计算机系统中的一种重要操作,用于数据的输入和输出,通常涉及到计算机与外部设备(如硬盘、网卡、键盘、鼠标、打印机等)之间的
- 2023-11-24这篇保证你彻底搞懂Java NIO的Selector事件选择器
Selector提供选择执行已经就绪的任务的能力,使得多元I/O成为可能,就绪选择和多元执行使得单线程能够有效率地同时管理多个I/Ochannel。C/C++许多年前就已经有select()和poll()这两个POSIX(可移植性操作系统接口)系统调用可供使用。许多os也提供相似的功能,但对Java程序
- 2023-05-14Java 网络编程 —— 非阻塞式编程
线程阻塞概述在生活中,最常见的阻塞现象是公路上汽车的堵塞。汽车在公路上快速行驶,如果前方交通受阻,就只好停下来等待,等到公路顺畅,才能恢复行驶。线程在运行中也会因为某些原因而阻塞。所有处于阻塞状态的线程的共同特征:放弃CPU,暂停运行,只有等到导致阻塞的原因消除,才能恢复运行,
- 2023-04-06NIO 实现非阻塞 Socket 通讯
NIO实现多人聊天室的案例服务端importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.*;importjava.nio.charset.Charset;/***聊天室服务端*/publicclassNServer{privateSelectorsele
- 2023-03-08RPC架构入门
RPC架构入门传统的socket分析(BIO的阻塞问题)阻塞点:sever.accept();inputStream.read();单线程情况下只能有一个客户端用线程池可以有多个客户端连接,但是非常消耗线程。NIO
- 2022-10-06Java NIO通信基础
参考书籍:Netty、Redis、ZooKeeper高并发实战1. IO读写的基本原理用户程序进行IO的读写,实际上是缓存区的复制。即read:从内核缓冲区复制到进程缓冲区;write:从进行缓冲区
- 2022-08-1911.NIO核心三:选择器(Selector)
.4.接收:SelectionKey.OP_ACCEPT;NIO非阻塞式网络通信的原理分析