【NIO】更简单的nio使用方式

本文介绍了如何将Java NIO与协程相结合,以简化网络编程的复杂性,避免回调地狱。作者从最初的困惑,到尝试xsocket、mina netty,最终选择协程作为解决方案。通过改造kilim并结合nio,作者创建了一个名为dawn的库,使得编写顺序、直观的网络服务代码成为可能。文中以Echo Server为例,展示了在dawn库中如何简便地实现一个TCP服务器。
摘要由CSDN通过智能技术生成

接触nio也有好几年了,最开始摸不着头脑,资料很少,网上的资料都是翻来覆去的抄袭,基本上对于自己的学习没有大帮助。


后来遇到了xsocket,觉得用起来还可以,挺方便,api也很简洁。不过这个库的用户不多,后来作者也停止了开发。


然后就是mina netty,这些不用说,了解nio的人都知道它们。不过想用好它们也不是那么容易。里面有各种回调,各种future,当你在处理网络事件的时候,如果想在发起一个连接,那回调代码就已经成翔。并非批评这种方式不好,只不过它不符合我这样的懒人、笨人使用。因为,就是做个接个连接、发起个连接而已,越直观越好。


于是就想找一种解决办法,改变当前的不爽。最初的努力方向,是通过锁、等待通知事件的机制进行封装,这样在一定程度上可以解决一部分问题,不过我设定的环境是处理网络事件比较频繁的环境,所以,锁的开销会潜在的比较高,也会显著的降低吞吐量。最重要的因素是:复杂度,应用层的复杂度得到一定程度的环境,不过底层代码的编写复制度还是很高,回调很多,很难直观的看到代码的全貌、流程,所以经过了很长一段的时间的尝试之后,决定换个角度看看。


于是重新审视我在处理的事情,其实就是事件的处理,事件的处理常用方法就是消息机制,发送消息,比如qt  mfc等等,都是用消息机制。觉得这样的方式不是我想要的。我想要一种类似线程的东西,但是挂起和恢复可以由自己来控制,而且开销要足够低。我知识面不算很宽,所以,当时还不知道这东西应

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值