Java IO — NIO Channel学习思考在上一章NIO Channel篇中我们解释了它在NIO中的作用。Channel(通道)是一个核心概念,它提供了与IO设备(如文件、网络套接字等)进行数据传输的能力。下面我将从多个方面详细讲解NIO的Channel。Channel本身不直接存储数据,它通过与Buffer(缓冲区)的交互来实现数据的读写。数据首先被读入到Buffer中,然后再从Buffer中写入到Channel,或者从Channel读入到Buffer。 Channel的工作原理 • 与Buffer的交互:Channel本身不直接存储数据,它通过与Buffer(缓冲区)的交互来实现数据的读写。数据首先被读入到Buffer中,然后再从Buffer中写入到Channel,或者从Channel读入到Buffer。 • 非阻塞模式:Channel支持非阻塞模式,这意味着线程可以在等待IO操作完成时继续执行其他任务,而不是被阻塞。这大大提高了程序的并发处理能力。 • Selector机制:NIO还提供了Selector机制,它允许单个线程同时处理多个Channel的IO事件。Selector会不断地轮询注册在其上的Channel,检查是否有IO事件发生,并通知相应的线程进行处理。2024-10-21 Java NIO 异步编程 学习 IO
Java IO — NIO Buffer学习思考在上一章中我们介绍的 NIO模型的核心组件 以及其运行流程 知道如何简单使用 buffer 之后,下面就来探究一下 buffer 的底层原理。 Buffer 的原理主要在于它的四个属性: • mark:在缓冲区操作过程当中,可以将当前的 position 的值临时存入 mark 属性中,需要的时候再取出,恢复到之前的 position,重新从之前的 position 位置开始处理。调用 mark() 方法来设置 mark=position,再调用 reset() 可以让 position 恢复到 mark 标记的位置,即 position=mark • position:位置,读或写都会改变位置 • limit:表示缓冲区的当前终点,不能对缓冲区超过极限的位置进行读写操作,极限可以修改 • capacity:容量,在缓冲区创建时设定且不可修改,比如前面创建的缓冲区容量就是 1024 且不可修改2024-10-21 Java IO NIO 学习 异步编程
Java IO — IO/NIO模型学习思考在Java中,IO(输入/输出)操作是核心组成部分,尤其是在网络编程和文件操作中。随着Java的发展,IO模型也在不断进化,以适应不同的应用场景和性能需求。本文将详细介绍Java中的三种主要IO模型:阻塞IO(BIO)、非阻塞IO(NIO)和异步非阻塞IO(AIO)。2024-10-21 Java 异步编程 多线程 学习 IO NIO
Java异步编程方式介绍技术分享异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过异步实现的场景。1. 线程Thread 2. Future 3. 异步框架CompletableFuture 4. Spring注解@Async 5. Spring ApplicationEvent事件 6. 消息队列 7. 第三方异步框架,比如Hutool的ThreadUtil 8. Guava异步2023-11-4 异步编程 Java 多线程
响应式开发之webFlux & Reactor技术分享webFlux 初识LambdaLambda 表达式,有时候也称为匿名函数或箭头函数,几乎在当前的各种主流的编程语言中都有它的身影。Java8 中引入 Lambda 表达式,使原本需要用匿名类实现接口2021-4-10 Spring Java 响应式 异步编程 WebFlux
Java基础-线程&并发技术分享线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。2020-2-25 Java 异步编程 多线程