我应该把业务逻辑放在 netty4 的什么地方?在 chanelRead0() 或 运行 一个任务?
where should I put business logic in netty4? In chanelRead0() or run a task?
我应该把业务逻辑放在netty4的什么地方?
我应该将我的代码放在 @Override channelRead0()
或 运行 中的任务中吗?
我知道这两者都会 运行 进入同一个 IO eventLoop,但它们之间有什么区别?哪个更好?
解决方案 1:
@Override
channelRead0(){
business code;
}
解决方案 2:
@Override
channelRead0(){
ctx.executor().submit(new task(){business code});
//or ctx.channel().eventLoop().submit(new task(){business code});
}
只要您不使用任何阻塞操作(例如从数据库读取)channelRead0
就完全没问题。一般来说,由您决定。 Submit
方法更适用于需要执行异步操作或定时事件的情况。对于阻塞事件,最好创建单独的执行程序。
我应该把业务逻辑放在netty4的什么地方?
我应该将我的代码放在 @Override channelRead0()
或 运行 中的任务中吗?
我知道这两者都会 运行 进入同一个 IO eventLoop,但它们之间有什么区别?哪个更好?
解决方案 1:
@Override
channelRead0(){
business code;
}
解决方案 2:
@Override
channelRead0(){
ctx.executor().submit(new task(){business code});
//or ctx.channel().eventLoop().submit(new task(){business code});
}
只要您不使用任何阻塞操作(例如从数据库读取)channelRead0
就完全没问题。一般来说,由您决定。 Submit
方法更适用于需要执行异步操作或定时事件的情况。对于阻塞事件,最好创建单独的执行程序。