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(); 
  }
}

+ Recent posts