본문 바로가기
자바

자바 동기화(Synchronization)

by 복제비 2021. 12. 29.

자바 동기화(Synchronization)

 

대부분의 응용 프로그램에서 다수의 스레드가 공유하는 공유 부분을  임계 영역(critical section)이라하며 상호 배타적으로 사용되어야 합니다.


즉, 임계 영역(critical section)은 스레드들이 상호배타적으로 사용하는 공유 부분이라 할 수 있습니다.

 

자바는 한 순간하나의 스레드만 실행할 수 있는  synchronized method 를 제공하고 있으며,  하나의 스레드가  동기화 메서드인  synchronized  method수행 중이면  다른 스레드들은  대기해야 합니다.

 

동기화(Synchronization)  -  synchronized  method 수행

 

스레드A 와  스레드B 가 동시에 실행하는 다중 스레드 방식동기화 메서드인 synchronized method 수행되는 과정은 다음과 같습니다.

 

스레드A가  lock 을 얻어서 공유 부분인 임계 영역에서 synchronized method 를 수행하는 동안,  스레드B 는  lock 을 얻을 때까지 대기하면서 기다립니다.

 

 

자바 동기화를 위한 실습 프로그램은 다음과 같습니다.

 

 

5개 스레드 객체가 실행되는 과정은 다음과 같습니다.

 

스레드 시작과 함께 synchronized method 에서 지정한 total 값을 먼저 읽어서 출력해 주고,

synchronized method 에서 3000 원씩 누적해 가는 과정을 반복합니다.

 

run( ) 메소드의  for 문은  i 값이 6 이 되었을때  누적 금액이 100000 원을 넘어가게 되어  break 문으로  for 반복문을 종료하고 전체 누적 금액을 출력하는 프로그램입니다.

 

'자바' 카테고리의 다른 글

자바 System 클래스  (0) 2022.01.06
자바 스레드 사이의 통신  (0) 2022.01.01
자바 스레드 우선순위 지정  (0) 2021.12.28
자바 다중 스레드  (0) 2021.12.25
Runnable 인터페이스를 이용한 스레드의 생성  (0) 2021.12.24

댓글