netty 异步非阻塞业务逻辑

发布于 2022-09-11 22:46:54 字数 241 浏览 21 评论 0

问题描述

netty的ChannelFuture是对jdk的Future进行改进,是我们能够优雅的书写非阻塞的业务逻辑。有的时候我们需要在hanndler的ChannelRead0方法内写异步(自己写一个线程池)的业务逻辑,通过netty提供的EventExecutor的sumbit返回的Future对象,但是这个对象又是jdk的,其get()又是阻塞的,那么如何写一个异步非阻塞的业务逻辑?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别低头,皇冠会掉 2022-09-18 22:46:54

可以在初始化ServerBootstrap的时候传入EventExecutorGroup,Handler的逻辑会在这个线程池执行,达到IO线程与业务线程分离的目的

bizGroup = new DefaultEventExecutorGroup(bizThreadNum); 
ServerBootstrap b = new ServerBootstrap(); 

b.childHandler(new ChannelInitializer<SocketChannel>() {     
@Override 
public void initChannel(SocketChannel ch) throws Exception {     
ch.pipeline().addLast(new NettyMessageDecoder());         
ch.pipeline().addLast(bizGroup, new ServerBusinessHandler())); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文