java wait 예제

(Last Updated On: August 2, 2019)

그리고 우리는 간단한 응용 프로그램을 개발할 것 이다 – 어디 우리가 동시성 문제를 처리 거 야, 더 나은 이해 의 목표wait() 및 notify(). 이 연습에서는 wait() 및 notify() 메서드를 사용하여 생산자 소비자 문제를 해결합니다. 프로그램을 단순하게 유지하고 wait() 및 notify() 메서드의 사용에 집중하기 위해 생산자 한 명과 소비자 스레드 한 개만 포함합니다. public 클래스 웨이터 구현 Runnable{ 개인 균형 bal; int currentBalance= bal.showBalance(); 공용 웨이터(밸런스 발){this.bal= bal; } @Override 공용 보이드 런() { 동기화(bal){ 현재 스레드는 이 개체의 모니터를 소유해야 합니다. 스레드는 이 모니터의 소유권을 해제하고 다른 스레드가 notify 메서드 또는 notifyAll 메서드에 대한 호출을 통해 깨우기 위해 이 개체의 모니터에서 대기 하는 스레드에 알림이 될 때까지 기다립니다. 그런 다음 스레드는 모니터의 소유권을 다시 가져오고 실행을 다시 시작할 때까지 기다립니다. 자세히 보기 : Java에서 wait()와 sleep()의 차이점 두 번째 예는 더 복잡하며 주석을 참조하십시오. 또한 대기(), 알림() 및 notifyAll()대신 조건 방법의 사용을 설명해 주시겠습니까? 그러나 문제는 대기 ()만입니다. wait() 를 사용하지 않는 경우 둘 다 알림이 됩니다.

그래서, 둘 다 와 함께 exaple을 제공할 수 있는 경우 그것은 좋은 것입니다. 몇 가지 이유가 있습니다. 예를 들어 대기해야 할 조건이 두 개 이상있을 수 있습니다. 알림을 받는 스레드를 제어할 수 없으므로 알림이 완전히 다른 조건을 기다리는 스레드를 절전 모드 해제할 수 있습니다. 다른 스레드가 호출할 때까지 기다리는 클래스는 메서드가 처리를 완료하도록 메서드에 알립니다. 웨이터 스레드는 동기화 된 블록을 사용 하 여 Message 개체에 모니터를 소유 하는. notify() 메서드는 이 개체의 모니터에 대한 액세스를 기다리는 스레드를 깨우는 데 사용됩니다. 이 예제는 wait()가 호출되기 전에 notify()가 호출되는 경우 작동하지 않습니다.

이 경우 주 스레드가 영원히 대기 / 차단됩니다. wait()가 b.start() 전에 1번째라고 하는지 확인하려면 wait() 명령을 내립니다. 내가 맞지? Message 개체에서 처리 한 다음 notify 메서드를 호출 하는 클래스는 Message 개체를 기다리는 스레드를 절전 모드 해제 합니다. 동기화된 블록은 Message 개체의 모니터를 소유하는 데 사용됩니다. 왜 대기(), notify(), notifyAll()이 객체 클래스에 있는 이유는 무엇입니까?라고 회신하십시오. 감사합니다 wait() 메서드는 잠금 메커니즘과 긴밀하게 통합되어 있습니다. 대기 스레드가 알림을 받을 수 있는 상태가 될 때까지 개체 잠금이 실제로 해제되지 않습니다. 이는 스레드 상태가 변경되어 알림을 받을 수 있도록 하는 경우에만 잠금을 유지한다는 것을 의미합니다. 이 시스템은 이 메커니즘에서 어떤 경주 조건도 발생하지 않도록 합니다. 동의해요.

b.join();를 사용해야 합니다. 계산이 완료 될 때까지 기다려야 하는 주 스레드를 강제로 문자열 이름= Thread.currentThread().getName(); System.out.println(이름); System.out.println(bal.showBalance()); System.out.println(“통지를 기다리는 웨이터 스레드”); { bal.wait(); } 캐치(InterruptedException e) { // TODO 자동 생성 캐치 블록 e.printStackTrace(); } System.out.println(“현재 처리 대기 중”); (int i=0;i<10;i++){ bal.add(현재 균형); } Java에서 여러 스레드의 작업을 조정하는 데 사용할 수 있는 도구 중 하나는 보호된 블록입니다.

Rick

After many years of being a full time freelance writer, and a long time resident of this state, I've decided to turn my full attention toward California by exploring all that it has to offer. My goal is to inspire you to get out there and explore this amazing state. Please follow my adventures and news content by visiting Calexplornia daily or clicking on one of my Social Media accounts below.