클라이언트 채널이 netty의 쓰기 가능 상태가 아닙니다. 어떤 전문가가 이유를 찾아 내도록 안내 할 수 있습니까클라이언트 채널이 쓰기 가능 상태 (NIO)가 아닙니다. Netty
채널이 항상 쓰기 가능한 상태가 아닌 이유는 무엇입니까?
쓰기 가능한 상태가 아니기 때문에 스레드는 절전 모드입니다. 스레드 덤프를 사용하여 스레드 상태를 분석하고 다음 루프에서 카운터를 추가하고 잠시 기다린 다음 루프를 종료합니다. 하지만 정말로 쓰기가 불가능한 이유를 찾아 내고 싶습니다.
채널 종료 후 채널이 ctx에 남아 있습니까 (클라이언트가 EOF를 보내지 않은 경우)?
만약 이것이 가능하다면 (쓰기가 불가능한 상태를 의미)?
while (!ctx.getChannel().isWritable()) {
Thread.sleep(100);
}
도와주세요.
당신은 선택기를 사용한다
while (ctx.getChannel(). isWritable()) { // 무언가를 써 넣으십시오. } 이렇게하면 선택기가 m 모드를 쓸 채널을 전환 할 때까지 대기하게됩니다. 채널이 다른 상태에있어 기입 가능으로 돌아갈 수없는 경우, thread는 무한 루프에 들어갈 가능성이 있습니다. –
@JohnChristy 정확히, 그렇게하지 마십시오. 채널 상태가 자고있는 동안 마술처럼 바뀌지는 않습니다. 이를 위해서는'select()'를 호출해야합니다. – EJP