본문 바로가기
자바

자바(JAVA) - synchronized 란?

by Hyeongjun_Ham 2024. 1. 16.

자바 - synchronized 란?

synchronized는 자바에서 멀티스레드 환경에서 동시 접근에 대한 동기화를 제공하는 키워드이다.

이를 사용하면 여러 스레드가 동일한 자원에 접근할 때 상호 배제를 통해 안전하게 작업을 수행할 수 있다.

 

synchronized 키워드는 크게 두 가지 주요 사용방법이 있다.

 

1. 메서드

public synchronized void synchronizedMethod() {
    // 동기화가 보장된 코드 블록
    // 여러 스레드가 동시에 이 메서드에 접근할 수 없음
}

 

synchronizedMethod()에 synchronized 키워드를 사용함으로써 해당 메서드는 오직 한 스레드만이 동시에 접근할 수 있다.

 

2. 블록에 적용

public void method() {
    // 비동기적인 코드 블록

    synchronized (lockObject) {
        // 동기화가 보장된 코드 블록
        // 여러 스레드가 동시에 이 블록에 접근할 수 없음
    }

    // 비동기적인 코드 블록 계속...
}

 

synchronized 블록은 lockObject 객체에 대해 동기화를 보장한다.

여러 스레드가 동시에 이 블록에 접근하는 것을 방지한다.

 

synchronized를 사용함으로써 공유 자원에 대한 안전한 동시 접근을 보장할 수 있다.

 

하지만 과도한 사용은 성능에 영향을 미칠 수 있으므로 필요한 부분에만 적절히 사용하는 것이 좋다.