JAVA/JAVA Thread 프로그래밍 Leejisoo 2018. 5. 12. 20:16
JAVA Thread synchronized, Semaphore 차이Thread 프로그래밍에서 synchronized블락은 많은 사람들이 알고있지만, Semaphore를 알고 있는 사람은 비교적 드문것 같다. 멀티 Thread 환경에서 synchronized 블락이 있는 경우와 없는 경우 그리고 Semaphore에 대해서 비교하고자 한다. synchronized, Semaphore 아무것도 없는 경우멀티 Thread 환경에서 아무 처리도 하지 않는 경우의 예제 이다. Thread 동기화에 대한 아무런 처리가 안되어 있는 소스기 때문에 수행결과는 순서를 보장하지 못하고 무작위로 출력된다. 샘플소스MainClass 는 Thread 를 for문을 통해서 5개 생성하도 바로 실행한다.Thread의 Runnabl..
JAVA/JAVA Thread 프로그래밍 Leejisoo 2018. 5. 12. 00:34
JAVA Thread wait, notify, notifyAll 쓰레드 협조우선 wait()메소드는 lock을 소유한 Thread가 자신의 제어권을 양보하고WAITING 또는 TIMED_WAITING상태에서 대기하기 위해서 사용된다. 반대로 notify()와 notifyAll()은 wait상태에 빠져있는 다른 Thread를 다시 RUNNABLE상태로 변경시키는 역할을 한다. 한가지 착각하기 쉽지만 반드시 유의해야 하는 점은 wait, notify, notifyAll은 Thread의 메소드가 아니라 Object의 메소드라는 점이다. wait()Lock을 소유한 Thread가 obj.wait()를 수행하는 경우 현재 Thread는 일시정지 되고 obj의 wait set(가상의 개념)으로 들어가게 된다. Th..