동기화 2

Synchronized와 ReentrantLock 차이점

공통점둘 다 임계 영역(critical section) 을 보호하여 동시 접근 문제를 방지합니다.하나의 스레드만 임계 영역을 실행할 수 있게 락(Lock)을 사용합니다.Synchronized (Java 키워드)JVM 수준의 모니터 락을 사용합니다.사용법이 간단함:synchronized (object) { // 임계 영역}메서드 단위로도 사용 가능:public synchronized void method() { ... }장점코드가 간결하고 가독성이 높음.락 해제를 자동으로 처리 (예외 발생 시에도 자동 해제).JVM이 최적화를 잘 해줌 (예: biased locking 등).단점공정성(fairness) 조절 불가.타임아웃 또는 인터럽트 불가.세밀한 락 제어 불가 (조건 변수 등 사용 불가).Reent..

Back_End/Java 2025.05.29

자바(JAVA) Synchronized

Java에서 synchronized 키워드는 멀티스레드 환경에서 데이터를 안전하게 공유하고 동기화하기 위해 사용됩니다. 여러 스레드가 동시에 접근할 수 있는 자원(주로 변수나 메서드)에 대한 동시 접근을 제어하여, 데이터 불일치나 경쟁 상태(race condition)를 방지하는 역할을 합니다. Synchronized 키워드의 사용 위치(1) 메서드 선언부에 사용메서드 선언부에 synchronized를 붙이면, 해당 메서드를 호출하는 스레드가 그 메서드를 실행할 때 동기화를 보장합니다.인스턴스 메서드에서 사용: 해당 메서드가 호출될 때마다 인스턴스(객체)에 대한 락이 걸립니다. 여러 스레드가 같은 객체의 메서드를 호출할 때, 하나의 스레드만 메서드를 실행할 수 있도록 보장합니다.클래스 메서드에서 사용: ..

Back_End/Java 2025.02.24