单线程Reactor模式和多线程oio(connection per thread)

发布时间:2024年01月03日

前置知识:Reactor模式,javaNIO,这里只说区别Reactor模式和多线程oio的区别

多线程oio的优点在于对于每个连接都用一个线程来处理,但是大量的线程的切换、阻塞会消耗大量服务器资源。
而reactor模式首先使用了select(java中的实现为javaNIO),在io准备好时才进行处理。虽然在accept连接时就new了一个handler(handler继承了runable),但是操作系统中并不存在new状态的线程,只存在于java程序中,只有当handler线程真正start之后才会创建线程。这样使用单线程就可以达到很高的效率和并发量。
reactor同样存在缺点,就是所有的handler和reactor都运行于同一个线程,如果有一个handler阻塞,那么整个reactor和其他的handler都会得不到执行。另外,单线程也会对多核处理器的效率造成浪费。(早期的nginx和redis都是使用的reactor模式)

参考代码:

Reactor模式

在这里插入图片描述

多线程OIO:

在这里插入图片描述在这里插入图片描述

文章来源:https://blog.csdn.net/qq_44758435/article/details/135368738
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。