2017-03-06 67 views
0

我应该把业务逻辑放在netty4中?我应该在哪里放置netty4的业务逻辑?在chanelRead0()或运行一个任务?

我应该只是把我的代码放在@Override channelRead0()或运行一个任务吗? 我知道这两者会碰到相同的IO事件循环,但它们之间的区别是什么?哪一个更好?

解决方案1:

@Override 
channelRead0(){ 
    business code; 
} 

解决方案2:

@Override 
channelRead0(){ 
    ctx.executor().submit(new task(){business code}); 
    //or ctx.channel().eventLoop().submit(new task(){business code}); 
} 
+0

如果您使用NioEventLoop,除非您进行一些自定义,否则该任务实际上会被提交到执行您的'channelRead0'方法的线程的任务队列:) – coolcfan

回答

1

只要你不使用任何阻塞操作(从DB例如读取)channelRead0是完全罚款。总的来说,由您决定。当您需要执行某些慢操作,异步操作或定时事件时,方法更可能出现在案例中。

相关问题