Java在1.4版本之前使用的是BIO模型。此模型是阻塞式模型,一个套接字连接需要一个线程来维护,一台计算机能开辟的线程数量有限,并且过多的线程会导致频繁的上下文切换,所以BIO的并发性能较低。
Java在1.4版本推出了NIO模型。此模型是多路复用的非阻塞式模型,配合Selector、SelectableChannel、SelectionKey可以搭建多路复用的非阻塞式套接字网络服务。
Java在1.7版本推出了AIO模型。此模型是在NIO的基础上扩展了异步回调。可以理解为封装了一个多线程异步回调的框架,任何框架的使用都有两面性,一方面是封装好的服务只需调用就可以了; 另一方面也会受到框架设计使用等方面的制约。
Java在21版本推出了虚拟线程。虚拟线程可以创建百万级虚拟线程,但不能创建百万级平台线程。虚拟线程的切换成本较低,平台线程的切换成本较高。
本书特点
本书以JDK 17长期维护版本为示例,详细地介绍了Java套接字网络通信相关的知识体系,让读者不仅知其然,而且知其所以然。本书对套接字网络通信相关的理论分门别类,层层递进地进行详细叙述和透彻分析,既体现了各知识点之间的联系,又兼顾了其渐进性。本书在介绍每个知识点时都给出了该知识点的应用场景,同时配合代码演示,让读者更能明白其实现原理和使用方式。本书丰富的免费配套资源包括源代码、完整的配套视频。
本书主要内容
第1章介绍了单例双重检查锁机制、happensbefore原则、LockSupport底层锁。
第2章介绍了数据流、序列化、文件系统提供的字节输入流功能。
第3章介绍了数据流、序列化、文件系统提供的字节输出流功能。
第4章介绍了数据流、序列化、文件系统提供的字符输入流功能。
第5章介绍了数据流、序列化、文件系统提供的字符输出流功能。
第6章介绍了Class类框架基石反射机制。
第7章介绍了ClassLoader类加载器,并实现自定义的类加载器。
第8章介绍了网络基础知识,如IP地址、网络接口、UDP。
第9章介绍了BIO模式下的Socket网络套接字服务。
第10章介绍了NIO模式下的Buffer缓冲区。
第11章介绍了NIO模式下的字符集、解码器、编码器。
第12章介绍了NIO模式下搭建多路复用的非阻塞式套接字网络服务。
第13章介绍了泛型的使用。
第14章介绍了List集合框架。
第15章介绍了Set集合框架。
第16章介绍了Map集合框架。
第17章介绍了自研WebSocket框架。基于Reactor设计模式,使用原生NIO实现的WebSocket网络框架。支持多线程、高并发、TLS安全层协议。
第18章介绍了JDK 21中的虚拟线程。
资源下载提示
素材(源码)等资源: 扫描目录上方的二维码下载。
视频等资源: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的二维码,可以在线学习。
读者对象
本书适合想自研NIO套接字框架、自定义协议、网络通信服务的Java开发人员阅读。
致谢
特别感谢清华大学出版社赵佳霓编辑。感谢她对本书专业且高效的审阅、对书中各种表意方式和文笔的润色建议,以及推动本书的出版。同时也感谢参与本书出版的所有出版社的老师,在大家的辛勤努力下,才有了本书的顺利出版。
刘宁萌2024年10月