St.*_*rio 5 java multithreading netty
我正在实施,ChannelInboundHandlerAdapter并且对并发性有疑问。是否有必要使其线程安全?我的意思是我必须为每个客户端的会话存储一些状态。
public class Impl extends ChannelInboundHandlerAdapter{
private List<Integer> someState;
//
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
int size = someState.size(); //Should I worry about memory consitency here?
//...
}
}
Run Code Online (Sandbox Code Playgroud)
关键是,如果从一个请求到channelRead另一个请求,该方法是由不同的线程调用的,那么我将不得不放置一些内存障碍。
有必要吗?还是Netty自己照顾?
尽管尝试修复3.5中的不一致,但3.x中没有定义明确的线程模型。4.0定义了一个严格的线程模型,可以帮助用户编写ChannelHandler而不用过多担心线程安全。
(强调是我的)