thread2 Thread Synchronized 쓰레드 배타제어 멀티 쓰레드 프로그램에서는 복수의 쓰레드가 자유롭게 동작한다.그리고 같은 인스턴스를 동시에 조작하는 경우도 있다. 하지만 이것은 경우에 따라서 곤란한 상황을 야기한다. 예를 들어 은행 계좌에서 돈을 인출한다고 해보자. 예금 잔고를 체크해서 필요금액 이상이 있으면 필요금액 만큼 인출하여 예금 잔고를 줄인다. 이렇게 하면 예금 잔고가 마이너스가 될 일은 없다. 하지만 2가지 쓰레드가 병행하여 실행 할 경우 예금잔고가 마이너스가 될 수 있다.어째서일까? 쓰레드 A와 쓰레드 B가 병행하여 동작하는 경우 타이밍에 따라서는 쓰레드 A의 잔고 확인과 잔고를 줄이는 처리 라고 하는 2개 처리 사이의 쓰레드 B의 처리가 끼어들 가능성이 있기 떄문이다!! 쓰레드 A와 쓰레드 B가 경쟁함으로써 예기치 않게 .. 2020. 4. 19. Thread Sleep Thread의 실행을 일시 정지시키는 방법 Thread 클래스의 sleep 메소드를 사용하면 쓰레드의 실행을 일시 정지시킬 수 있다.sleep 메소드는 Thread 클래스의 클래스 메소드이다. 예제를 살펴보자. 위 소스는 hello world를 10회 표시하는 소스인데 한 번 출력할 때마다 약 1000밀리(1초) 동안 쓰레드를 정지한다. 결국 1초 간격으로 hello world를 출력한다. sleep 메소드의 호출은 try-catch로 묶여있다. 이것은 sleep 메소드가 Interrupted Exception 이라고 하는 예외를 통보하는 경우가 있기 때문이다. Interrupted Exception은 쓰레드의 처리를 취소하는데 사용되는 예외이다. 2020. 4. 19. 이전 1 다음