-
[Java] 멀티스레드 프로그램(2) - 스레드간의 데이터 교환공개/Java & Oracle 2013.11.12 16:49
스레드 시작
↓
파이를 계산한다
↓
공유영역에 계산 결과를 쓴다→
↓
스레드 끝
공유영역
3.14....
스레드 시작
↓
→공유영역의 데이터를 읽는다
↓
데이터를 출력한다
↓
스레드 끝
위와 같은 프로그램을 만들려합니다. 먼저 공유영역을 만들어 줍니다.
class SharedArea { double result; boolean isReady; }
파이를 계산하는 스레드 클래스를 만들어줍니다.
class CalThread extends Thread{ SharedArea sa_save; public void run(){ double total=0; for(int i=1;i<1000000000;i+=2){ if(i/2%2==0) total+=1.0/i; else total-=1.0/i; } double pi = total*4; sa_save.result = pi;//공유영역에 저장 sa_save.isReady=true; //공유데이터가 쓰였는지 확인하는 변수 } }
파이를 출력하는 스레드 클래스를 만들어줍니다.
class PrintThread extends Thread{ SharedArea sa_read; public void run(){ while(sa_read.isReady !=true) continue; System.out.println(sa_read.result);//공유영역의 데이터 출력 } }
마지막으로 스레드들을 실행할 메인메소드가 있는 클래스를 만들어줍니다.
class MultiThread2 { public static void main(String[] args) { CalThread thread1=new CalThread(); PrintThread thread2 = new PrintThread(); SharedArea sa = new SharedArea(); /* * 공유영역 객체를 생성해서 그 객체의 참조값을 두 스레드의 필드에 저장 */ thread1.sa_save=sa; thread2.sa_read=sa; //스레드 실행 thread1.start(); thread2.start(); } }
3.141592651589258'공개 > Java & Oracle' 카테고리의 다른 글
[Oracle] 보고서 양식으로 출력하기(1) (0) 2013.11.12 [Java] 멀티스레드를 이용한 말 경주 프로그램 (0) 2013.11.12 [Java] 멀티스레드 프로그램(2) - 스레드간의 데이터 교환 (0) 2013.11.12 [Java] 로또(Lotto) 프로그램(1) (0) 2013.11.11 [Oracle] 기본 SQL SELECT문 작성(1) (0) 2013.11.10 [Oracle] SCOTT계정, HR계정 풀어주기 (0) 2013.11.10 댓글 0