JAVA Basic 강의자료] Synchronization 예제
JAVA Basic 강의자료] Synchronization 예제
실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
Synchronization 예제
*시스템에 미루기 : synchronized
*프로그래머가 직접 제어
-wait()와 notify() 이용
<소스코드>
//SyncThreadMain.java
import java.util.*;
class SyncStack {
private Vector buffer = new Vector();
public synchronized char pop(){
char c;
c = ((Character)(buffer.remove(buffer.size()-1))).charValue();
return c;
}
public void push(char c){
synchronized(this){
Character charObj = new Character(c);
buffer.addElement(charObj);
}
}
}
class PopThread extends Thread{
private SyncStack ss = null;
public PopThread(SyncStack ss){
this.ss = ss;
}
public void run(){
System.out.println(this.getName() + " Poping:" + ss.pop() + " OK");
}
}
==========================
class PutThread extends Thread{
private char c;
private SyncStack ss = null;
public PutThread(SyncStack ss, char c){
this.ss = ss;
this.c = c;
}
public void run(){
System.out.println(this.getName() + " Putting Char:" + c);
ss.push(c);
}
}
public class SyncThreadMain{
public static void main(String args[]){
System.out.println("Starting SyncTest...");
SyncStack ss= new SyncStack();
for(int i=0; i<10; i++)
new PutThread(ss,(char)(i+33)).start();
for(int i=0; i<10; i++)
new PopThread(ss).start();
}
}
'자바 > Java공부하기' 카테고리의 다른 글
JAVA Basic 강의자료] equals() (0) | 2016.09.09 |
---|---|
JAVA Basic 강의자료] Object class란? (0) | 2016.09.09 |
JAVA Basic 강의자료] Priority 예제 (0) | 2016.09.09 |
JAVA Basic 강의자료] 멀티스레드 문제해결책-2 (0) | 2016.09.08 |
JAVA Basic 강의자료] 멀티스레드 문제해결책-1 (0) | 2016.09.08 |