Java Programming

Java 'synchronized' method

tomato13 2008. 6. 27. 17:10

http://cafe.naver.com/79nana.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=268

 

class Printer {
 synchronized void printChar(char ch) {
  for(int i=1; i<=10; i++) {
   System.out.print(ch);
  }   
 }
}

 

class PrinterThread extends Thread {
 Printer ptr;
 char ch;
 PrinterThread(Printer ptr, char ch) {
  this.ptr = ptr;
  this.ch = ch;
 }
 
 public void run() {
  for(int i=1; i<=10; i++) {
   ptr.printChar(ch);
   System.out.println();
  }
 }
}

 

public class CSynchronization {
 public int m_Start() {
  Printer ptr = new Printer();
  PrinterThread ptr1 = new PrinterThread(ptr, 'A');     (1)
  PrinterThread ptr2 = new PrinterThread(ptr, 'B');     (2)

  ptr1.start();
  ptr2.start();
  
  return 1;
 }
}

 

(1), (2)에서 동일한 Print 객체를 사용한 것을 확인할 수 있다. 그래야만 하는 듯 하다... 만일 (2)에서 ptr이 아닌 다른 Print객체를 생성하여 넣게 되면 동기화가 정상적으로 진행되지 않는다.

 

'Java Programming' 카테고리의 다른 글

Inner class  (0) 2008.06.30
다른 객체에 대한 Synchronizing  (0) 2008.06.30
java의 synchronized 분석  (0) 2008.06.27
Java virtual function(?)  (0) 2008.06.25
Interface class에 대한 implementation(child, grandchild)  (0) 2008.06.25