JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
Ŭ·¡½º CyclicBarrier

java.lang.Object 
  »óÀ§¸¦ È®Àå java.util.concurrent.CyclicBarrier

public class CyclicBarrier
extends Object

thread ¼¼Æ®ÀÇ °¢°¢ÀÌ °øÅëÀÇ ¹Ù¸®¾î Æ÷ÀÎÆ®¿¡ À̸¦ ¶§±îÁö ´ë±âÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÏ´Â µ¿±âÈ­ Áö¿ø ±â´É. CyclicBarrier´Â ¼­·Î ´ë±âÇÏ´Â °ÍÀÌ ¶§¶§·Î ÇÊ¿äÇÏ°Ô µÇ´Â °íÁ¤ »çÀÌÁîÀÇ thread ÆÄƼ°¡ °ü°èµÈ ÇÁ·Î±×·¥À¸·Î À¯¿ëÇÕ´Ï´Ù. ¹Ù¸®¾î´Â ´ë±âÁßÀÇ thread°¡ ÇعæµÈ ÈÄ¿¡ ÀçÀÌ¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ ¡¸¼øȯ½Ä¡¹À̶ó°í ºÒ¸³´Ï´Ù.

CyclicBarrier ´Â ¿É¼Ç Runnable Ä¿¸àµå¸¦ Áö¿ø ÇÕ´Ï´Ù. ÀÌ°ÍÀº ¸¶Áö¸· thread°¡ µµÂøÇÑ ÈÄ¿¡ ¾î´À threadµµ ÇعæµÇ±â Àü¿¡ ¹Ù¸®¾î Æ÷ÀÎÆ® ¸¶´Ù 1ȸ ½ÇÇàµË´Ï´Ù. ÀÌ ¡¸¹Ù¸®¾î ¾×¼Ç¡¹Àº ÆÄƼÁß ÇÑÂÊÀÌ Ã³¸®¸¦ ¼ÓÇàÇϱâ Àü¿¡ °øÀ¯ »óŸ¦ °»½ÅÇϴµ¥ µµ¿òÀÌ µË´Ï´Ù.

»ç¿ë·Ê: Â÷¿¡ º´·Ä ºÐÇØ ¼³°è¿¡¼­ÀÇ ¹Ù¸®¾îÀÇ »ç¿ë¿¹¸¦ ³ªÅ¸³À´Ï´Ù.


 class Solver {
   final int N;
   final float[][] data;
   final CyclicBarrier barrier;
   
   class Worker implements Runnable {
     int myRow;
     Worker(int row) { myRow = row; }
     public void run() {
       while (! done()) {
         processRow(myRow);

         try {
           barrier.await(); 
         } catch (InterruptedException ex) { 
           return; 
         } catch (BrokenBarrierException ex) { 
           return; 
         }
       }
     }
   }

   public Solver(float[][] matrix) {
     data = matrix;
     N = matrix.length;
     barrier = new CyclicBarrier(N, 
                                 new Runnable() {
                                   public void run() { 
                                     mergeRows(...); 
                                   }
                                 });
     for (int i = 0; i < N; ++i) 
       new Thread(new Worker(i)). start();

     waitUntilDone();
   }
 }
 
¿©±â¼­, °¢ ¿öÅ©½º ·¹µå´Â Çà·ÄÀÇ ÇàÀ» ó¸®ÇØ, ¸ðµç ÇàÀÌ Ã³¸®µÉ ¶§±îÁö ¹Ù¸®¾î·Î ´ë±âÇÕ´Ï´Ù. ¸ðµç ÇàÀÌ Ã³¸®µÇ¸é, ÁöÁ¤µÈ Runnable ¹Ù¸®¾î ¾×¼ÇÀÌ ½ÇÇàµÇ¾î, ÇàÀ» ¸ÓÁö ÇÕ´Ï´Ù. ¼Ö·ç¼ÇÀÌ °ËÃâµÈ °ÍÀ» ¸¶Àð°¡ ÆǺ°Çϸé, done()°¡ true¸¦ µ¹·ÁÁÖ°í, °¢ ¿öÄ«°¡ Á¾·áÇÕ´Ï´Ù.

¹Ù¸®¾î ¾×¼ÇÀÌ ½ÇÇà½Ã¿¡ Áß´ÜµÈ ÆÄƼ¿¡ Á¸ÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì, ±× ¾×¼ÇÀÌ ÇعæµÇ¸é, ÆÄƼ³»ÀÇ ¸î°³ÀÇ thread°¡ ±×°ÍÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ¿ëÀÌÇÏ°Ô Çϱâ À§ÇÑ, await() °¢ È£ÃâÀº ¹Ù¸®¾îÀÇ À§Ä¡¿¡¼­ ±× threadÀÇ µµÂø À妽º¸¦ ¸®ÅÏÇÕ´Ï´Ù. ±× ÈÄ, ¹Ù¸®¾î ¾×¼ÇÀ» ½ÇÇàÇÏ´Â thread¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

  if (barrier.await() == 0) {
     // log the completion of this iteration
   }

CyclicBarrier´Â ½ÇÆÐÇÑ µ¿±âÈ­ÀÇ ½Ãµµ¿¡ ´ëÇؼ­ ÆĽºÆ®ÆäÀÏ·Î ÀüÀΰ¡ ¹«Àΰ¡ÀÇ Àý´Ü ¸ðµ¨À» »ç¿ëÇÕ´Ï´Ù. ³¢¾îµé¾î, ½ÇÆÐ, ¶Ç´Â ŸÀÓ ¾Æ¿ôÀ» À§Çؼ­ thread°¡ ¹Ù¸®¾î Æ÷ÀÎÆ®¸¦ ¹Ì¼º¼÷·ÎÀÇÇØ µÎ¸é, ÀüÀÇ await() ·ÎºÎÅÍ Àç°³µÇ¾î ÀÖÁö ¾ÊÀº thread¸¦ Æ÷ÇÔÇÑ, ´Ù¸¥ ¸ðµç thread¿¡¼­µµ BrokenBarrierException (À̰͵鿡¼­µµ °ÅÀÇ µ¿½Ã¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â °æ¿ì´Â InterruptedException)¸¦ °³ÀÔ½ÃÄÑ ÀÌ»óÇÑ »óÅ°¡ °è¼ÓµË´Ï´Ù.

µµÀÔµÈ ¹öÀü :
1.5
°ü·Ã Ç׸ñ:
CountDownLatch

»ý¼ºÀÚ °³¿ä
CyclicBarrier (int parties)
          ÁöÁ¤µÈ ¼öÀÇ ÆÄƼ (thread)°¡ ´ë±â »óÅ¿¡ ÀÖ´Â °æ¿ì¿¡ ¿©Çà ÇÏ´Â »õ·Î¿î CyclicBarrier¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
CyclicBarrier (int parties, Runnable  barrierAction)
          ÁöÁ¤µÈ ¼öÀÇ ÆÄƼ (thread)°¡ ´ë±â »óÅ¿¡ ÀÖ´Â °æ¿ì¿¡ ¿©Çà ÇÏ´Â »õ·Î¿î CyclicBarrier¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
 
¸Þ¼­µå °³¿ä
 int await ()
          ¸ðµçÆÄƼ°¡ ÀÌ ¹Ù¸®¾î·Î await¸¦ È£ÃâÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
 int await (long timeout, TimeUnit  unit)
          ¸ðµçÆÄƼ°¡ ÀÌ ¹Ù¸®¾î·Î await¸¦ È£ÃâÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
 int getNumberWaiting ()
          ¹Ù¸®¾î·Î ´ë±âÇÏ°í ÀÖ´Â ÆÄƼÀÇ ¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 int getParties ()
          ÀÌ ¹Ù¸®¾îÀÇ ¿©Çà¿¡ ÇÊ¿äÇÑ ÆÄƼÀÇ ¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 boolean isBroken ()
          ÀÌ ¹Ù¸®¾î°¡ °íÀå »óÅ¿¡ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¹®ÀÇÇÕ´Ï´Ù.
 void reset ()
          ¹Ù¸®¾î¸¦ Ãʱ⠻óÅ¿¡ ¸®¼Â ÇÕ´Ï´Ù.
 
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

»ý¼ºÀÚ »ó¼¼

CyclicBarrier

public CyclicBarrier(int parties,
                     Runnable  barrierAction)
ÁöÁ¤µÈ ¼öÀÇ ÆÄƼ (thread)°¡ ´ë±â »óÅ¿¡ ÀÖ´Â °æ¿ì¿¡ ¿©Çà ÇÏ´Â »õ·Î¿î CyclicBarrier¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ¹Ù¸®¾îÀÇ Æ®¸³½Ã¿¡´Â ÁöÁ¤µÈ ¹Ù¸®¾î ¾×¼ÇÀÌ, ¹Ù¸®¾î¿¡ µé¾î°£ ¸¶Áö¸· thread¿¡ ÀÇÇØ ½ÇÇàµË´Ï´Ù.

ÆĶó¹ÌÅÍ:
parties - ¹Ù¸®¾î°¡ ¿©Çà Çϱâ Àü¿¡ await()¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ´Â threadÀÇ ¼ö
barrierAction - ¹Ù¸®¾îÀÇ Æ®¸³½Ã¿¡ ½ÇÇàÇÏ´Â Ä¿¸àµå. ¾×¼ÇÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â null
¿¹¿Ü:
IllegalArgumentException - parties°¡ 1 ¹Ì¸¸ÀÇ °æ¿ì

CyclicBarrier

public CyclicBarrier(int parties)
ÁöÁ¤µÈ ¼öÀÇ ÆÄƼ (thread)°¡ ´ë±â »óÅ¿¡ ÀÖ´Â °æ¿ì¿¡ ¿©Çà ÇÏ´Â »õ·Î¿î CyclicBarrier¸¦ ÀÛ¼ºÇÕ´Ï´Ù. °¢ ¹Ù¸®¾î¿¡ ´ëÇÑ Á¤ÀÇ ³¡³­ ¾×¼ÇÀº ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
parties - ¹Ù¸®¾î°¡ ¿©Çà Çϱâ Àü¿¡ await()¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ´Â threadÀÇ ¼ö
¿¹¿Ü:
IllegalArgumentException - parties°¡ 1 ¹Ì¸¸ÀÇ °æ¿ì
¸Þ¼­µåÀÇ »ó¼¼

getParties

public int getParties()
ÀÌ ¹Ù¸®¾îÀÇ ¿©Çà¿¡ ÇÊ¿äÇÑ ÆÄƼÀÇ ¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÀÌ ¹Ù¸®¾îÀÇ ¿©Çà¿¡ ÇÊ¿äÇÑ ÆÄƼÀÇ ¼ö

await

public int await()
          throws InterruptedException,

                 BrokenBarrierException 
¸ðµçÆÄƼ°¡ ÀÌ ¹Ù¸®¾î·Î await¸¦ È£ÃâÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.

ÇöÀçÀÇ thread°¡ ¸¶Áö¸·¿¡ µµÂøÇÏ´Â thread°¡ ¾Æ´Ñ °æ¿ì, threadÀÇ ½ºÄÉÁÙ¸µ¿¡ ´ëÇؼ­´Â ¹«È¿·Î ¿©°ÜÁ® ´ÙÀ½Áß ÇÑÂÊÀÌ ¹ß»ýÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.

ÇöÀçÀÇ thread·Î

InterruptedExceptionÀÌ Throw µÇ¾î ÇöÀçÀÇ threadÀÇ ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº°¡ Ŭ¸®¾î µË´Ï´Ù.

¸î°³ÀÇ thread°¡ ´ë±âÁß¿¡ ¹Ù¸®¾î·Î reset() °¡ ½ÇÇàµÇ´ÂÁö, await È£Ãâ½Ã ¶Ç´Â ¸î°³ÀÇ thread°¡ ´ë±âÁß¿¡ ¹Ù¸®¾î°¡Æı«µÇ¾úÀ» °æ¿ì, BrokenBarrierExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù.

´ë±âÁß¿¡ ¸î°³ÀÇ thread·ÎÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì, ´ë±âÁßÀÇ ´Ù¸¥ thread°¡ ¸ðµÎ BrokenBarrierException¸¦ Throw ÇØ, ¹Ù¸®¾î°¡ °íÀå »óÅ¿¡ ³õ¿©Áý´Ï´Ù.

ÇöÀçÀÇ thread°¡ µµÂøÇÏ´Â ¸¶Áö¸· threadÀ̸ç, »ý¼ºÀÚ³»¿¡¼­ nullÀÌ ¾Æ´Ñ ¹Ù¸®¾î ¾×¼ÇÀÌ ÁöÁ¤µÇ´Â °æ¿ì, ÇöÀçÀÇ thread´Â ¾×¼ÇÀ» ½ÇÇàÇÏ°í ³ª¼­, ´Ù¸¥ threadÀÇ ¼ÓÇàÀ» Çã¿ëÇÕ´Ï´Ù. ¹Ù¸®¾î ¾×¼ÇÁß¿¡ ¿¹¿Ü°¡ ¹ß»ýÇϸé, ÇöÀçÀÇ thread³»¿¡¼­ ±× ¿¹¿Ü°¡ ¼Û½ÅµÇ¾î ¹Ù¸®¾î°¡ °íÀå »óÅ¿¡ ³õ¿©Áý´Ï´Ù.

¹Ýȯ°ª:
ÇöÀçÀÇ threadÀÇ µµÂø À妽º. À妽º getParties() - 1 Àº ÃÖÃÊ·Î µµÂøÇÏ´Â thread¸¦, Á¦·Î´Â ¸¶Áö¸·¿¡ µµÂøÇÏ´Â thread¸¦ ³ªÅ¸³½´Ù
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
BrokenBarrierException - ÇöÀçÀÇ threadÀÇ ´ë±âÁß¿¡ ´Ù¸¥ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ, ¹Ù¸®¾î°¡ ¸®¼Â µÈ, await È£Ãâ½Ã¿¡ ¹Ù¸®¾î°¡ Æı«µÈ, ¶Ç´Â ¿¹¿Ü¸¦ À§Çؼ­ ¹Ù¸®¾î ¾×¼Ç (Á¸ÀçÇÏ´Â °æ¿ì)ÀÌ ½ÇÆÐÇßÀ» °æ¿ì

await

public int await(long timeout,
                 TimeUnit  unit)
          throws InterruptedException,

                 BrokenBarrierException,

                 TimeoutException 
¸ðµçÆÄƼ°¡ ÀÌ ¹Ù¸®¾î·Î await¸¦ È£ÃâÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.

ÇöÀçÀÇ thread°¡ ¸¶Áö¸·¿¡ µµÂøÇÏ´Â thread°¡ ¾Æ´Ñ °æ¿ì, threadÀÇ ½ºÄÉÁÙ¸µ¿¡ ´ëÇؼ­´Â ¹«È¿·Î ¿©°ÜÁ® ¾Æ·¡ÀÇ ¾î¶² °ÍÀΰ¡°¡ ¹ß»ýÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.

ÇöÀçÀÇ thread·Î

InterruptedExceptionÀÌ Throw µÇ¾î ÇöÀçÀÇ threadÀÇ ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº°¡ Ŭ¸®¾î µË´Ï´Ù.

ÁöÁ¤µÈ ´ë±â ½Ã°£ÀÌ °æ°úÇϸé, TimeoutExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù. ½Ã°£ÀÌ Á¦·Î ¶Ç´Â ±×°Íº¸´Ù ÀÛÀº °æ¿ì, ¸Þ¼­µå´Â ´ë±âÇÏÁö ¾Ê½À´Ï´Ù.

¸î°³ÀÇ thread°¡ ´ë±âÁß¿¡ ¹Ù¸®¾î·Î reset() °¡ ½ÇÇàµÇ´ÂÁö, await È£Ãâ½Ã ¶Ç´Â ¸î°³ÀÇ thread°¡ ´ë±âÁß¿¡ ¹Ù¸®¾î°¡Æı«µÇ¾úÀ» °æ¿ì, BrokenBarrierExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù.

´ë±âÁß¿¡ ¸î°³ÀÇ thread·ÎÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì, ´ë±âÁßÀÇ ´Ù¸¥ thread°¡ ¸ðµÎ BrokenBarrierException¸¦ Throw ÇØ, ¹Ù¸®¾î°¡ °íÀå »óÅ¿¡ ³õ¿©Áý´Ï´Ù.

ÇöÀçÀÇ thread°¡ µµÂøÇÏ´Â ¸¶Áö¸· threadÀ̸ç, »ý¼ºÀÚ³»¿¡¼­ nullÀÌ ¾Æ´Ñ ¹Ù¸®¾î ¾×¼ÇÀÌ ÁöÁ¤µÇ´Â °æ¿ì, ÇöÀçÀÇ thread´Â ¾×¼ÇÀ» ½ÇÇàÇÏ°í ³ª¼­, ´Ù¸¥ threadÀÇ ¼ÓÇàÀ» Çã¿ëÇÕ´Ï´Ù. ¹Ù¸®¾î ¾×¼ÇÁß¿¡ ¿¹¿Ü°¡ ¹ß»ýÇϸé, ÇöÀçÀÇ thread³»¿¡¼­ ±× ¿¹¿Ü°¡ ¼Û½ÅµÇ¾î ¹Ù¸®¾î°¡ °íÀå »óÅ¿¡ ³õ¿©Áý´Ï´Ù.

ÆĶó¹ÌÅÍ:
timeout - ¹Ù¸®¾î¸¦ ´ë±âÇÏ´Â ½Ã°£
unit - timeout ÆĶó¹ÌÅÍÀÇ ½Ã°£ ´ÜÀ§
¹Ýȯ°ª:
ÇöÀçÀÇ threadÀÇ µµÂø À妽º. À妽º getParties() - 1 Àº ÃÖÃÊ·Î µµÂøÇÏ´Â thread¸¦, Á¦·Î´Â ¸¶Áö¸·¿¡ µµÂøÇÏ´Â thread¸¦ ³ªÅ¸³½´Ù
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
TimeoutException - ÁöÁ¤µÈ ŸÀÓ ¾Æ¿ô ½Ã°£ÀÌ °æ°úÇßÀ» °æ¿ì
BrokenBarrierException - ÇöÀçÀÇ threadÀÇ ´ë±âÁß¿¡ ´Ù¸¥ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ, ¹Ù¸®¾î°¡ ¸®¼Â µÈ, await È£Ãâ½Ã¿¡ ¹Ù¸®¾î°¡ Æı«µÈ, ¶Ç´Â ¿¹¿Ü¸¦ À§Çؼ­ ¹Ù¸®¾î ¾×¼Ç (Á¸ÀçÇÏ´Â °æ¿ì)ÀÌ ½ÇÆÐÇßÀ» °æ¿ì

isBroken

public boolean isBroken()
ÀÌ ¹Ù¸®¾î°¡ °íÀå »óÅ¿¡ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¹®ÀÇÇÕ´Ï´Ù.

¹Ýȯ°ª:
±¸Ãà ¶Ç´Â ¸¶Áö¸· ¸®¼Â ÀÌÈÄ, ³¢¾îµé¾î ¶Ç´Â ŸÀÓ ¾Æ¿ôÀ» À§Çؼ­ 1°³ ÀÌ»óÀÇ ÆÄƼ°¡ ÀÌ ¹Ù¸®¾î·ÎºÎÅÍ Æı«µÇ¾ú´ÂÁö, ¿¹¿Ü¸¦ À§Çؼ­ ¹Ù¸®¾î ¾×¼ÇÀÌ ½ÇÆÐÇßÀ» °æ¿ì´Â true, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false

reset

public void reset()
¹Ù¸®¾î¸¦ Ãʱ⠻óÅ¿¡ ¸®¼Â ÇÕ´Ï´Ù. ¸î°³ÀÇ ÆÄƼ°¡ ¹Ù¸®¾î·Î ´ë±âÁßÀÇ °æ¿ì´Â BrokenBarrierException¸¦ ThrowÀÇÇØ º¹±ÍÇÕ´Ï´Ù. ´Ù¸¥ ÀÌÀ¯·Î½á Àý´ÜÀÌ ¹ß»ýÇÑ µÚ¿¡ ¸®¼Â ÇÏ´Â °æ¿ì´Â ½ÇÇàÀÌ º¹ÀâÇÏ°Ô µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. Áï, ´Ù¸¥ ¾î¶°ÇÑ ¹æ¹ýÀ¸·Î thread¸¦ À絿±â ÇØ, ¸®¼Â¸¦ ½ÇÇàÇÏ´Â thread¸¦ ¼±ÅÃÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ »óȲ¿¡¼­´Â ÀÌÈÄ¿¡ »ç¿ëÇϱâ À§Çؼ­ ¹Ù¸®¾î¸¦ »õ·Î¿î ÀÛ¼ºÇÏ´Â (ºÐ)ÆíÀÌ ¹Ù¶÷Á÷ÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù.


getNumberWaiting

public int getNumberWaiting()
¹Ù¸®¾î·Î ´ë±âÇÏ°í ÀÖ´Â ÆÄƼÀÇ ¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÁÖ·Î µð¹ö±× ¹× ¼±¾ðÀ¸·Î µµ¿òÀÌ µË´Ï´Ù.

¹Ýȯ°ª:
await() ³»¿¡¼­ ÇöÀç ºí·Ï µÇ°í ÀÖ´Â ÆÄƼÀÇ ¼ö

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.