netty的误区

     最近在基于netty做一些开发,程序基本都跑起来,发现有时偶发出现BlockingOperationException异常,通过连续跟踪程序,基本定位点,但是居然该框架就是故意出错,说不遵守netty的事件机制规则。原文是:

  An IllegalStateException which is raised when a user performed a blocking operation when the user is in an event loop thread. If a blocking operation is performed in an event loop thread, the blocking operation will most likely enter a dead lock state, hence throwing this exception.

   也就是说居然有可能出错,那就让你出错。

   但是从sync/await提供的同步等待接口,就是希望能够进行IO等待处理,结果它抛异常,等待就成了一句空话。

  总结一句话:在netty的IO线程之中不能使用sync/await接口,否则就会出现意外错误。


  对于目前这种事件响应的接口机制,为了获得同步调用,将需要通过共享一些变量达到要求,只能进行简单同步封装。初步考虑使用:

 实现一个ChannelFutureListener的实现类,里面增加一个notify和wait对象,确保operationComplete 来获得准确的发送状态,通知外部状态等候着。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值