gpt4 book ai didi

java - 在不同的 ChannelPipeline 中共享 ExecutionHandler

转载 作者:行者123 更新时间:2023-12-01 15:25:36 25 4
gpt4 key购买 nike

我的服务器有两个不同类型的客户端,它们具有不同的消息格式,因此服务器中有两个 NioServerSocketChannelFactory 分别处理两种类型的客户端请求。这两种类型的客户端需要在两个NioServerSocketChannelFactory的处理程序中访问同一个对象。我可以在两个 ChannelPipelines 中共享相同的 OrderedMemoryAwareThreadPoolExecutor 对象吗?

例如:

Channels.pipeline(
concurrencyHandler,
new Handler1());
}

Channels.pipeline(
concurrencyHandler,
new Handler2());
}

当 handler1 和 2 访问同一个对象时,OrderedMemoryAwareThreadPoolExecutor 会处理线程并发吗?

最佳答案

您应该为每个 ChannelFactory 使用一个 ExecutionHandler,因为 OrderedMemoryAwareThreadPoolExecutor 使用 Channel id 来查找给定 Channel 的正确 Executor。 Channel id 仅对每个 ChannelFactory 是唯一的,因此如果您在不同的 ChannelFactory 之间共享它,可能会产生严重的副作用。

关于java - 在不同的 ChannelPipeline 中共享 ExecutionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com