synchronized 3

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

레이스 컨디션(RACE CONDITION) 이란?

**Race Condition(레이스 컨디션)**은 둘 이상의 스레드 또는 프로세스가 공유 자원에 동시에 접근할 때, 실행 순서에 따라 결과가 달라지는 비정상적인 상태를 의미합니다.즉,"두 개 이상의 작업이 동시에 실행되며 공유 자원을 경쟁적으로 접근하고, 그 순서에 따라 예상치 못한 결과가 발생하는 경우"→ 레이스 컨디션 레이스 컨디션 예시 (Java)public class RaceConditionExample { static int counter = 0; public static void main(String[] args) throws InterruptedException { Runnable task = () -> { for (int i = 0; i 📌 기..

CS 2025.05.23

자바(JAVA) Synchronized

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

Back_End/Java 2025.02.24