본문 바로가기

강좌/JAVA THREAD

자바 쓰레드(Thread) - 쓰레드(Thread)의 데이터 교환 예제

쓰레드간의 데이터를 교환할때 무작정 하면 안된다.

쓰레드는 어찌됐는 각각 따로따로 일을 처리 한다. 예를 들어

3.14 (파이값)를 구해서 찍는걸 생각해보자.

우선 클래스 4개를 준비해보자.


- A : 메인메소드가 있는 클래스

- B : 파이값을 계산하는 클래스

- C : 파이값을 찍는 클래스

- D : B와 C를 위한 공통 공유 구역이다.


 요지는 B에서 계산한 값을 D클래스 인스턴스 변수에다 넣고 C는 그걸 가져가다 찍는것이다.


결과를 테스트 해보면 C는 0.0을 찍는다. 왜냐하면 아직 B는 계산중이므로 D에 값을 던져주지 못했는데 C가 D의 값을 가져다 쓰니까 그런다. 

이를 위해 B가 계산 끝나고 D에 값을 넣어 줄때까지 C는 B가 끝났는지 안끝났는지 체크하면서 값을 가져 올 필요가 있다.


아래 예제를 위의 설명 예제이다. 


1. A클래스


2. B클래스(데이터 저장)


2. C클래스(데이터 찍기)


2. D클래스(공유)