½º·¹µåµ¿±âÈ
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ÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå ÀÛ¼ºÀÚ:Àںϸâ¹ö ÇÑâÇå |