1つのクライアントがn個の異なるサーバーに接続しています。だから、私はn異なるチャネルを作成しています。
私のサーバーは5000以上です。私は、1つのイベントループグループで10個のイベントループを使用しています。また、各チャネルごとに別々のパイプラインがあります。
私は1つのイベントループを使用し、まだ10のイベントループで何も同時性の問題が発生していない場合、並行性の問題はないことを知っています。私の質問は
です。コードの下に、なぜ?
複数のイベントループがこれにアクセスしていないと、複数のイベントループを使用しているという点が何であるのでしょうか?Netty:複数のイベントループを使用する同時実行性の問題
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, HttpObject httpObject) throws UnknownHostException {
if(channelHandlerContext.channel().remoteAddress() != null)
{
String remoteAddress = remoteAddress(channelHandlerContext.channel().remoteAddress().toString());
if (httpObject instanceof HttpResponse) {
HttpResponseStatus responseStatus = ((HttpResponse)httpObject).getStatus();
if (responseStatus.code() == HttpResponseStatus.OK.code())
{
healthTargets.storeHealthyTarget(InetAddress.getByName(remoteAddress));
}
}
}
}
healthTargets.storeHealthyTarget
だけIPを保存するためのHashSetを使用してhealthTargetsはシングルトンクラスです。
スレッドバグは、通常散発的に発生するバグです。これらのバグは、報告されたときに再現することが通常困難です。スレッドの問題に関するインターフェイスのルールに従えば、安全でなければなりません – Ferrybig