반응형
package javaapplication28; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; //공유 데이터인 집계판을 시뮬레이션하는 클래스 //두 WorkerThread 스레드에 의해 동시 접근함 class SyncObject{ int sum=0;//집계판의 합 //synchronized 삭제 하였을 때 void add(){ int n=sum; Thread.yield(); n+=10;//10을 증가시킨다. sum=n;//증가한 값을 누적 시킨다. System.out.println(Thread.currentThread().getName()+":"+sum); } int getSum(){return sum;} } //학생을 시뮬레이션 하는 스레드 클래스 class WorkerThread extends Thread{ SyncObject sObj;//집계판의 주소 WorkerThread(String name, SyncObject sObj){ super(name); this.sObj=sObj; } //집계판을 반복적으로 10번 접근하여 카운팅한다. public void run(){ int i=0; while(i<10){ sObj.add(); i++; } } } public class JavaApplication28 { public static void main(String[] args) { SyncObject obj = new SyncObject();//집계판 공유 데이터 생성 //스레드 생성시 집계판의 주소를 알려준다. 두스레드는 집계판에 동시에 접근한다. Thread th1=new WorkerThread("kitae",obj); Thread th2=new WorkerThread("hyosoo",obj); //두 스레드를 실행시킨다. th1.start(); th2.start(); } }
<결과>
2016/11/14 - [자바] - 자바 소스코드: 스레드 충돌 방지 예제
2016/11/14 - [자바] - 자바 소스코드: ThreadFinishingFlag 예제(Java 무한 생산)
2016/11/14 - [자바] - 자바 소스코드: 스레드 호출순서 정하기 예제
#자바 #자바 소스코드 #스레드 충돌 예제 #실습 예제
반응형
'자바' 카테고리의 다른 글
자바 소스코드: 움직이는 물체를 맞추는 사격 게임 (3) | 2016.11.23 |
---|---|
자바 소스코드: 아무거나 빨리 눌러 바 채우기 (0) | 2016.11.14 |
자바 소스코드: 스레드 충돌 방지 예제 (0) | 2016.11.14 |
자바 소스코드: ThreadFinishingFlag 예제(Java 무한 생산) (0) | 2016.11.14 |
자바 소스코드: 스레드 호출순서 정하기 예제 (0) | 2016.11.14 |