¼Ò¼³ java.lang ¼Ò½ºÄڵ堠Object  wait(), notify(), notifyAll()¸Þ¼­µå  
wait(), notify(), notifyAll()¸Þ¼­µå

SyncTest.java

import java.util.*;
class SyncStack {
  
private Vector buffer = new Vector();
  
public synchronized char pop() {
    
char c;
    
while(buffer.size()==0) {
      
try{
        System.out.println(
"stack´ë±â:");
        
this.wait();
      }
catch(Exception e){}
    }
    Character cr = ((Character)buffer.remove(buffer.size()-
1));
    c = cr.charValue();
    System.out.println(
"stack»èÁ¦:" + c);
    
return c;
  }
  
public synchronized void push(char c) {
    
this.notify();
    Character charObj = 
new Character(c);
    buffer.addElement(charObj);
    System.out.println(
"stack»ðÀÔ:" + c);
  }
}
class PopRunnable extends Thread {
  
public void run(){
    SyncTest.ss.pop();    
  }
}
class PushRunnable extends Thread {
  
private char c;
  
public PushRunnable(char c) {
    
this.c =c ;
  }
  
public void run() {
    SyncTest.ss.push(c);
  }
}
public class SyncTest {
  
public static SyncStack ss =new SyncStack();
  
public static void main(String[] args) {
    
    
//SyncStack¿¡ 5µ¥ÀÌÅÍ»ðÀÔ
    
new PushRunnable('J').start();
    
new PushRunnable('A').start();
    
new PushRunnable('B').start();
    
new PushRunnable('O').start();
    
new PushRunnable('O').start();

    
new PopRunnable().start();//O
    
new PopRunnable().start();//O
    
new PopRunnable().start();//B
    
new PopRunnable().start();//A
    
new PopRunnable().start();//J
    
new PopRunnable().start();//´ë±â»óÅÂ

    
try {
      Thread.sleep(
5000);
    }
catch(Exception e){}
    System.out.println(
"===== passed 5 seconds======");
    
new PushRunnable('K').start();
  }
}

C:\examples\10.Objec>javac SyncTest.java
C:\examples\10.Objec>java SyncTest
stack»ðÀÔ:J
stack»ðÀÔ:A
stack»ðÀÔ:B
stack»ðÀÔ:O
stack»ðÀÔ:O
stack»èÁ¦:O
stack»èÁ¦:O
stack»èÁ¦:B
stack»èÁ¦:A
stack»èÁ¦:J
stack´ë±â:

wait()¸Þ¼­µå´Â ½º·¹µå°¡ µ¿±âÈ­µÈ °øÀ¯ÀÚ¿øÀ» ¿äûÇÒ ¶§  ½º·¹µå¸¦ ´ë±â»óÅ·Π¸¸µé¾î ÁÝ´Ï´Ù. 
notify(), notifyAll()¸Þ¼­µå´Â ´ë±âÁß¿¡ ÀÖ´Â ½º·¹µå(µé)¿¡°Ô µ¿±âÈ­µÈ °øÀ¯ÀÚ¿øÀ» ¾µ ¼ö ÀÖµµ·Ï ½º·¹µå¿¡°Ô ¾Ë¸®´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.



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