프로그래밍 동기화2 72.wait(), notify() 메서드를 활용한 동기화 프로그래밍 wait() / notify()에서 메서드를 활용한 동기화 프로그래밍 - 리소스가 어떤 조건에서 더 이상 유효하지 않은 경우 리소스를 기다리기 위해 Thread가 wait()상태가 된다. - wait() 상태가 된 Thread은 notify()가 호출 될 때까지 기다린다. - 유효한 자원이 생기면 notify()가 호출되고 wait()하고 있는 Thread 중 무작위로 하나의 Thread를 재시작 하도록 한다. - notifyAll()이 호출되는 경우 wait() 하고 있는 모든 Thread가 재시작 된다. - 이 경우 유효한 리소스만큼의 Thread만이 수행될 수 있고 자원을 갖지 못한 Thread의 경우는 다시 wait() 상태로 만든다. - 자바에서는 notify() 메서드의 사용을 권장한다. - .. 2022. 6. 7. 71.멀티 Thread 프로그래밍에서의 동기화 critical section 과 semaphore - critical section은 두 개 이상의 thread가 동시에 접근하는 경우 문제가 생길 수 있기 때문에 동시에 접근할 수 없는 영역 - semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다. - 한 순간 오직 하나의 thread 만이 semaphore를 얻을 수 있고, 나머지 thread들은 대기(blocking)상태가 된다. - semaphore를 얻은 thread만이 critical section에 들어갈 수 있다. - Park 과 ParkWife가 동시에 Bank 자원에 접근하여 작업이 이루어지는 경우의 예제 - SyncMain.java class Bank { private int money = 1.. 2022. 6. 7. 이전 1 다음