Search
📕

40강. 쓰레드의 동기화

무단 도용 및 복제, 사용 저작권 안내 수업 목적 외에 모든 교안 자료를 무단으로 도용 (URL 연결, 복제, 공유), 불법으로 복사하여 배포하는 것을 금지합니다. 꼭 지켜주세요!
본 강좌에서는 자바의 쓰레드 동기화에 대해 살펴보겠습니다!

1. 학습 목표

쓰레드 동기화에 대해 살펴보고 활용법을 본다.

2. 학습 내용

임계영역
동기화

3. 임계영역

동시의 여러 개의 쓰레드가 특정 소스코드 혹은 메서드를 동시에 접근 할 경우 해당 메서드를 서로 사용하려고 하는데 이처럼 여러 개의 쓰레드가 동시에 접근 할 수 있는 코드 영역 혹은 메서드를 임계 영역이라고 부른다.
프로그램에서 임계 영역이 있을 경우 프로그램 전체의 심각한 오류를 발생 시킬 수도 있다.
자바에서는 동기화를 통해 이러한 부분을 해결할 수 있다.

4. 동기화

동기화
동기화를 하게 되면 임계영역 때문에 발생되는 문제를 막아 줄 수 있다.
동기화를 하게 되면 쓰레드가 접근하는 순서대로 코드를 처리하고 늦게 도착하는 쓰레드는 기다 렸다가 먼저 도착한 쓰레드의 작업이 완료가 되면 다음 쓰레드가 작업을 하게 된다.
동기화는 메서드를 동기화 하는 방법과 코드의 일부분을 동기화 하는 방법으로 나눠진다.
메서드의 동기화
여러 개의 쓰레드가 호출하는 메서드가 있다고 한다면 메서드의 코드는 임계영역에 해당한다.
이런 경우에는 메서드 전체를 동기화 하면되는데 다음과 같이 작성해 주면된다.
public synchronized void method() { 임계영역 코드 }
Java
복사
코드의 동기화
Run 메서드의 코드 일부분을 동기화 하고자 할 때는 임계 영역에 해당하는 코드 부분을 synchronized 블록으로 묶어 주면 된다.
synchronized(클래스 혹은 객체) { 임계영역 코드 }
Java
복사

5. 학습 정리

정리
여러 개의 쓰레드가 메서드 혹은 특정 코드를 같이 사용하는 것을 임계 영역이라고 부른다.
임계 영역으로 인해 발생되는 오류를 방지하기 위해서는 동기화를 해주면 된다.