Java - IO通信(BIO & 伪异步IO & NIO & AIO)

简介: Java - IO通信(BIO & 伪异步IO & NIO & AIO)

1、BIO 服务端一个线程会负责一个连接,进行请求的处理和响应,比较明显,当客户端比较多的时候,服务端的线程可能就不够了,这时候对应的请求就没法及时处理了

客户端个数:服务端处理线程个数=1:1

IO类型:阻塞同步

API使用难度:简单

调试难度:简单

可靠性:比较差

吞吐量:低

2、伪异步IO 服务端会维护一个线程池来处理请求端的请求,也比较明显,当客户端的请求比较多的时候,线程池的线程也是不够的,此时也会出现请求处理阻塞的情况

客户端个数:服务端处理线程个数=m:n

IO类型:阻塞同步

API使用难度:简单

调试难度:简单

可靠性:比较差

吞吐量:中

3、NIO 这个是当前比较牛逼的技术了,服务端通过缓存区、通道、多路复用等技术,允许客户端的请求成千上万,读写都首先通过缓存区来承接,然后通过通道来传输信息,通过多路复用器轮询通道,看看是否存在读或者写时间,然后再进行处理,大大提升了IO处理的性能和稳定性

客户端个数:服务端处理线程个数=m:1

IO类型:非阻塞同步

API使用难度:非常复杂,所以,给了Netty机会

调试难度:复杂

可靠性:比较高

吞吐量:高

4、AIO 异步IO,简化了NIO的通信模型

客户端个数:服务端处理线程个数=m:0

IO类型:非阻塞异步

API使用难度:复杂

调试难度:复杂

可靠性:比较高

吞吐量:高

目录
相关文章
|
2月前
|
缓存 网络协议 Java
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
|
6月前
|
Java 调度
[Java]线程生命周期与线程通信
本文详细探讨了线程生命周期与线程通信。文章首先分析了线程的五个基本状态及其转换过程,结合JDK1.8版本的特点进行了深入讲解。接着,通过多个实例介绍了线程通信的几种实现方式,包括使用`volatile`关键字、`Object`类的`wait()`和`notify()`方法、`CountDownLatch`、`ReentrantLock`结合`Condition`以及`LockSupport`等工具。全文旨在帮助读者理解线程管理的核心概念和技术细节。
78 1
[Java]线程生命周期与线程通信
|
6月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
5月前
|
Java
JAVA多线程通信:为何wait()与notify()如此重要?
在Java多线程编程中,`wait()` 和 `notify()/notifyAll()` 方法是实现线程间通信的核心机制。它们通过基于锁的方式,使线程在条件不满足时进入休眠状态,并在条件满足时被唤醒,从而确保数据一致性和同步。相比其他通信方式,如忙等待,这些方法更高效灵活。 示例代码展示了如何在生产者-消费者模型中使用这些方法实现线程间的协调和同步。
66 3
|
6月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
69 1
|
6月前
|
安全 Java 开发者
Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用
本文深入解析了Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用。通过示例代码展示了如何正确使用这些方法,并分享了最佳实践,帮助开发者避免常见陷阱,提高多线程程序的稳定性和效率。
116 1
|
6月前
|
Java
在Java多线程编程中,`wait()` 和 `notify()/notifyAll()` 方法是线程间通信的核心机制。
在Java多线程编程中,`wait()` 和 `notify()/notifyAll()` 方法是线程间通信的核心机制。它们通过基于锁的方式,使线程在条件不满足时进入休眠状态,并在条件成立时被唤醒,从而有效解决数据一致性和同步问题。本文通过对比其他通信机制,展示了 `wait()` 和 `notify()` 的优势,并通过生产者-消费者模型的示例代码,详细说明了其使用方法和重要性。
92 1
|
6月前
|
Java
|
9月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
9月前
|
Java
Java中的NIO编程详解
Java中的NIO编程详解