¼Ò¼³ java.lang ¼Ò½ºÄڵ堠Thread  ½º·¹µåµ¿±âÈ­  

½º·¹µåµ¿±âÈ­

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

C:\examples\8. Thread>javac  SyncThreadMain.java
C:\examples\8. Thread>java SyncThreadMain
Starting SyncTest...
Putting Char:!
Putting Char:"
Putting Char:#
Putting Char:$
Putting Char:%
Putting Char:&
Putting Char:'
Putting Char:(
Putting Char:)
Putting Char:*
Thread-10Poping:* OK
Thread-11Poping:) OK
Thread-12Poping:( OK
Thread-13Poping:' OK
Thread-14Poping:& OK
Thread-15Poping:% OK
Thread-16Poping:$ OK
Thread-17Poping:# OK
Thread-18Poping:" OK
Thread-19Poping:! OK

½º·¹µåÀÇ µ¿±âÈ­ ¹®Á¦°¡ ¹ß»ýÇϸé synchronized·Î ¼±¾ðÇØÁØ´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå
ÀÛ¼ºÀÚ:Àںϸâ¹ö ÇÑâÇå