首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Netty ChannelHandlerContext从不同线程写入

Netty ChannelHandlerContext从不同线程写入
EN

Stack Overflow用户
提问于 2017-06-27 22:18:29
回答 1查看 721关注 0票数 0

我正在用Netty做一个实时游戏,我有一个问题,那就是在一个不同于ChannelHandler所在线程的ChannelHandlerContext上使用write方法。

我在Java应用程序中有一个单独的线程池,我将在其中从数据库中提取数据并执行游戏逻辑。我想使用BlockingQueue向不同的线程提交请求,以传递播放器发送的ChannelHandlerContext和数据。然后,该线程将基于此对游戏状态进行更改。完成后,我希望能够使用ChannelHandlerContext write方法将更改后的游戏状态的响应写回给用户。

如果我从单独的游戏逻辑线程执行此操作,我不希望写入函数对该线程造成负担。如果我从那里调用write,它会产生自己的线程,使用游戏逻辑线程,还是使用ChannelHandler's线程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 00:42:21

在这种情况下,将使用ChannelHandler线程。这是因为ChannelHandlerContext.write方法会检查您所在的线程。如果从外部线程(而不是事件执行器线程)调用ctx.write方法,则ctx.write操作将提交给属于您的上下文的线程。

实际发生的事情可以简单地描述如下:

代码语言:javascript
运行
复制
gameLogicPool.send(new Runnable() {
         //your logic here
         ctx.write(response);
         //ctx.write actually does this when executed from another thread:
         ctx.executor().execute(new Runnable() {
             //write happens here when you are in event executor already
             }
         );
    }
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44782682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档