Netty:处理程序在OrderedMemoryAwareThreadPoolExecutor之后总是需要volatile属性吗?

时间:2012-07-25 16:02:48

标签: java netty volatile

我在ChannelHandlers中使用实例变量来跟踪通道状态。但我的管道配置是使用OrderedMemoryAwareThreadPoolExecutor。

这意味着每个上游事件总是按顺序处理,没有并发性,我不需要担心线程安全问题。

但无论如何,处理程序将由ExecutionHandler的不同线程调用。所以我被迫将所有实例变量声明为volatile以使它们在线程之间可见,尽管它们从不被同时调用?

我读过的关于volatile变量的所有文档都说如果你想保证修改在线程中是可见的,那么它是必需的,但是如果你保证你的线程总是访问那些变量,它们不会指定是否也需要这些修改。顺序。

我也看到当前的netty编解码器不使用volatile属性,那么我们可以在OrderedMemoryAwareThreadPoolExecutor之后使用吗?

1 个答案:

答案 0 :(得分:0)

是的..即使使用ExecutionHandler也不需要volatile或同步。