java timeout 예제

알림이 도착하지 않는다는 것을 알고 있다면 대기(long)와 수면(long)의 차이점은 무엇입니까? 예를 들어 개체에 notify() 메서드를 사용하지 않는다고 가정해 보겠습니다. 그런 다음 이론적으로 개체에 기다릴 이유가 없습니다(). 그러나 wait(long) 메서드는 Lock을 해제하고 다시 획득한다는 점을 제외하면 Thread 클래스의 sleep(long) 메서드처럼 작동한다는 추가이 있습니다. 즉, 대기 및 알림 메커니즘을 사용하지 않는 경우에도 잠금을 유지하지 않고 잠자는 방법으로 wait(long) 메서드를 사용할 수 있습니다. 예를 들어 다음과 같은 클래스가 있다고 가정합니다. 0의 시간 설정은 무한 시간 으로 해석됩니다. 불법인수예외 – 시간 시간의 값이 음수인 경우. 시간 지정이 만료되면 소켓이 여전히 유효하지만 java.net.SocketTimeout예외가 발생합니다. 영향을 미치려면 차단 작업을 입력하기 전에 이 옵션을 활성화해야 합니다. 시간 시간 – 밀리 초에서 기다릴 수있는 최대 시간. 위의 예제 Java 코드와 같이 밀리 초를 포함하는이 소켓 시간 초과 설정과 같은 호출을 처리 할 때마다 다음과 같은 방법으로 코드를 작성합니다.

Object.wait() 메서드입니다. 우리가 말했듯이, 이것은 간단한 예입니다 : wait (long) 메서드를 사용하지 않고 다음 클래스를 코딩해야한다고 상상해보십시오 : 지정된 시간 아웃으로 SO_TIMEOUT을 밀리 초 단위로 활성화 / 비활성화하십시오. 이 옵션을 0이 아닌 시간 으로 설정하면 이 소켓과 연결된 InputStream에 대한 read() 호출이 이 시간 동안만 차단됩니다. 그냥 자바 응용 프로그램으로 프로그램을 위의 실행하고 당신은 이클립스 콘솔에서 타임 아웃예외를 생성 할 수 있습니다. 다른 작업을 수행할 수 있도록 조건이 결국 충족될 것이라는 것을 알고 있을 때 시간 시간을 추가할 수 있습니다. 예를 들어 getBusyFlag() 메서드에서 다른 작업을 수행해야 한다고 가정해 보겠습니다. 당신은 당신에게 유용한 예제를 투표하기 위해 클릭 할 수 있습니다. 조건이 발생할 때까지 기다립니다. 그러나 알림이 시간 시간 시간(시간 시간)에 발생하지 않은 경우 어쨌든 반환됩니다. 이것은 Object 클래스의 메서드이며 동기화된 블록 또는 메서드에서 호출해야 합니다. 다음은 Socket 클래스 Javadoc, 특히이 setSoTimeout 메서드에 대한 Javadoc의 인용문입니다 : 때로는 소켓을 사용하여 반드시 소켓을 사용하는 것이 아니라 외부 시스템과의 통신이 필요한 코드를 작성할 때 직렬 포트를 사용할 수 있습니다.

시간 지정 알고리즘을 구현하는 방법이 필요할 수 있으므로 지정된 시간이 지나면 요청이 결과를 반환하지 않으면 사용자가 결과에 따라 행동할 수 있도록 시간 지정 오류를 throw해야 하며, 앞으로 도래하지 않을 결과를 무기한 기다려야 합니다.