// Make socketChannel.read() return after 500ms at most
socketChannel.socket().setSoTimeout(500);
while(!SHUTDOWN) {
int read = socketChannel.read(buffer);
if(read > 0){
// Do something nice
break;
}
}
그리고 쓰기
, 내가 데이터를 각 10 초 쓰기 :읽기 위해, 나는 서버에서 모든 것을 읽을 무한 루프를 만들었습니다.
문제는 내가 가끔 발견되는 쓰기 작업이 읽는 동안 차단 된 (I 각 루프에서 짧은 기간, 예를 들어,이 100ms에 대한 읽기 스레드 잠을 한 경우,이 문제는 분명히 나타나지 않습니다).
AFAIK, TCP 연결은 양방향 작업을 동시에 제공 할 수 있습니다. 아무도 이것을 설명 할 수 있습니까?
당신은 완전히'읽기()'메소드에 의해 반환되는 정보를 무시한다. 그러지 마. – EJP
죄송합니다, @EJP는, 이것은 내가 – MrROY
그것을 고정 루프에서 데이터를 읽고 있습니다 그것은 좋은 이유 – MrROY