자바에서는 어떻게 IO 에 timeout 을 겁니까?
글쓴이: vigor96 / 작성시간: 화, 2003/04/08 - 10:05오후
자바에서
Runtime aaa = Runtime.getRuntime(); Process process = aaa.exec("애플리케이션"); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); while ((inLine = in.readLine()) != null) { // 데이타 내용을 읽어서 처리 }
여기서 "애플리케이션"의 응답이 없으면
무한적으로 기다리게 됩니다.
timeout 을 걸고 싶은데..그 방법을 모르겠습니다.
c/c++ 에서는 timer 를 이용했던 것 같은데.
방법을 알려 주세요..
감사합니다.
Forums:
JDK 1.4.x버전에서는 timer객체를 지원합니다.java.uti
JDK 1.4.x버전에서는 timer객체를 지원합니다.
java.util.Timer 가 있습니다.
그 이전 버전에서는 간단하게 쓰레드로 Timer를
만드셔야 합니다.
그럼.
쓰레드로 Timer 돌리면 그 IO 에 timeout 이
쓰레드로 Timer
돌리면 그 IO 에 timeout 이
생기게 할 수 있습니까?
그것에 해당하는 IOException 항목이 보이지 않던데요..
자세히 알려주세요..~~~~~
쓰레드를 사용하여 타임아웃을 구현할수는 있습니다.하지만 그것이
쓰레드를 사용하여 타임아웃을 구현할수는 있습니다.
하지만 그것이 곧 실제 IO 액션에 들어간 쓰레드를 인터럽트 걸어 블록킹에서
깨어나게 한다는 의미는 결코 아닙니다. 블록킹 된 쓰레드는 에러나 eof 일때
까지 계속 멈춰져 있을 것입니다.
예외인 경우는 소켓의 setSoTimeout() 등의 메소드를 이용하는 것입니다.
하지만 이것도 read 에 국한된 사항입니다.
좀 더 근본적인 해결을 위해서, 1.4 의 논블럭킹 IO 를 사용하시기 바랍니다.
댓글 달기