单线程Reactor模式和多线程oio(connection per thread)
2024-01-03 19:39:15
前置知识: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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!