로딩
요청 처리 중입니다...

[JAVA] 스레드 동기화

 [JAVA] 스레드 동기화

스레드 동기화 멀티 스레드는 하나의 객체를 공유해서 작업 가능하다. 다른 스레드에 의해서 객체 내부 데이터가 변경될 수 있기에 다른 결과가 나올 수 있다.

이를 위해서 스레드 작업이 끝날 때가지 다른 스레드가 변경할 수 없도록 스레드 작업이 끝날 때까지 객체에 잠금을 걸면 된다. 다음과 같이 Lock을 걸면 Lock을 건 스레드만 접근 가능하고 다른 스레드는 접근할 수 없다.

Lock을 걸지 않은 메서드는 접근 가능하다. synchronized 일반적인 set 메서드를 가지는 Total Class를 만들자. ExThread2에서는 total 값을 3333으로 바꾼다.

ExThread1에서는 total 값을 9999으로 바꾼다. 실행해 보면 둘 다 3333으로 나오게 된다.

Synchronized를 사용하게 되면 위와 같이 정상적으로 나오게 된다. wait()과 notify()를 이용한 스레드 제어 두 개의 스레드를 번갈아가면서 실행하기 위해서는 wait()와 notify()를 사용한...

# Callable # 스레드동기화 # 스레드 # 락 # 동기화 # 데몬스레드 # synchronized # Runnable # Interrupt # Executors # 쓰레드풀