[java] 쓰레드의 동기화 방법: synchronized 키워드
자바에서 멀티쓰레드 환경을 다룰 때 가장 중요한 이슈 중 하나는 쓰레드 동기화입니다. 여러 쓰레드가 공유 자원에 동시에 접근하면 예상치 못한 결과가 발생할 수 있습니다.
이를 해결하기 위해 자바에서는 synchronized
키워드를 사용하여 코드 블록 또는 메서드에 락을 걸어 해당 자원에 대한 단독 접근 권한을 확보 할 수 있습니다.
public class ThreadSafeCounter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
위의 예제에서 increment
와 getCount
메서드에 synchronized
키워드가 붙어있는데, 이는 여러 쓰레드가 동시에 increment
또는 getCount
메서드를 호출할 때 한 쓰레드가 실행 중일 때 다른 쓰레드는 대기하도록 만듭니다.
synchronized
키워드를 사용하는 것은 쉽지만, 이것만으로 모든 문제를 해결할 수 없습니다. 때로는 락을 잘못 설정해 데드락 을 유발하는 경우가 있으므로 주의가 필요합니다.
적절한 쓰레드 동기화 방법을 선택하고 올바르게 구현하는 것은 중요합니다. 이를 통해 안정적인 멀티쓰레드 환경을 구축할 수 있습니다.
더 자세한 내용은 Oracle 자바 동기화 가이드 를 참고하세요.