Java在1.4版本之前使用的是BIO模型。此模型是阻塞式模型,一个套接字连接需要一个线程来维护,一台计算机能开辟的线程数量有限,并且过多的线程会导致频繁的上下文切换,所以BIO的并发性能较低。 Java在1.4版本推出了NIO模型。此模型是多路复用的非阻塞式模型,配合Selector、SelectableChannel、SelectionKey可以搭建多路复用的非阻塞式套接字网络服务。 Java在1.7版本推出了AIO模型。此模型是在NIO的基础上扩展了异步回调。可以理解为封装了一个多线程异步回调的框架,任何框架的使用都有两面性,一方面是封装好的服务只需调用就可以了; 另一方面也会受到框架设计使用等方面的制约。 Java在21版本推出了虚拟线程。虚拟线程可以创建百万级虚拟线程,但不能创建百万级平台线程。虚拟线程的切换成本较低,平台线程的切换成本较高。 本书特点 本书以JDK 17长期维护版本为示例,详细地介绍了Java套接字网络通信相关的知识体系,让读者不仅知其然,而且知其所以然。本书对套接字网络通信相关的理论分门别类,层层递进地进行详细叙述和透彻分析,既体现了各知识点之间的联系,又兼顾了其渐进性。本书在介绍每个知识点时都给出了该知识点的应用场景,同时配合代码演示,让读者更能明白其实现原理和使用方式。本书丰富的免费配套资源包括源代码、完整的配套视频。 本书主要内容 第1章介绍了单例双重检查锁机制、happensbefore原则、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月