org.wegra.util
Class Timer

java.lang.Object
  extended byorg.wegra.util.Timer

public final class Timer
extends java.lang.Object

ÁÖ¾îÁø ½Ã°£¸¶´Ù ÀÛ¾÷À» ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ Timer Ŭ·¡½º. ÀÏ´Ü ½ÇÇà½ÃŰ¸é ¹Ì¸® Á¤ÇØÁø ½Ã°£¸¸Å­ ½ÇÇàµÈ´Ù. ½º·¹µåµé¿¡ ºñÇØ ºñ±³Àû ³ôÀº ¿ì¼± ¼øÀ§¿¡¼­ ½ÇÇàµÇ¸ç Çϳª ÀÌ»óÀÇ ÀÏ¹Ý ½º·¹µåµéÀº Timer°¡ ¸¸·áµÇ±â¸¦ ±â´Ù¸°´Ù. "one shot" ¸ðµå´Â Çѹø¸¸ ½ÇÇàµÈ ÈÄ ¸¸·áµÈ´Ù. ´Ù½Ã ½ÇÇàµÉ ¼öµµ ÀÖÁö¸¸ º¸Åë ±×·² Çʿ䰡 ¾ø´Â °æ¿ì¿¡¸¸ »ç¿ëÇÑ´Ù. "multi shot" ¸ðµå´Â ´Ù½Ã ½ÇÇàµÇ´Â °æ¿ì¿¡ ÁÖ·Î »ç¿ëÇÑ´Ù ÀÌ Á¡¸¸ »©¸é µÎ ¸ðµå´Â ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ¸í½ÃÀûÀ¸·Î stop() ¸Þ¼Òµå¸¦ È£ÃâÇØ¾ß¸¸ Á¾·áµÈ´Ù. "continuous" ¸ðµå´Â °è¼ÓÇØ¼­ ½ÇÇàµÇ¾î¾ß ÇÏ´Â °æ¿ì¿¡ »ç¿ëÇÑ´Ù. Timer°¡ ¿Ï·áµÇ¾úÀ» °æ¿ì¿¡´Â ÀÚµ¿ÀûÀ¸·Î ´Ù½Ã Timer¸¦ ½ÃÀÛÇØÁØ´Ù. "multi shot" ¸ðµå¿Í ¸¶Âù°¡Áö·Î ¸í½ÃÀûÀ¸·Î stop() À» È£ÃâÇØ¾ßÇÑ´Ù. ¸ðµç Timer ¸ðµå´Â ½ÇÇàÁßÀÌ¶óµµ Àç½ÃÀÛµÉ ¼ö ÀÖ´Ù. (½Ã°£ °£°ÝÀ» ¿ø·¡´ë·Î µÇµ¹¸®´Â ±â´É)

ÁÖÀÇ>
1. "multi shot" Timer ȤÀº "continuous" Timer¿¡ ´ëÇÏ stop()À» »ç¿ëÇØ¼­ Á¾·áÇØÁÖ´Â °ÍÀ» ÀØ´Â °æ¿ì°¡ Á¾Á¾ »ý±ä´Ù. ÀÌ´Â °ð¹Ù·Î ¸Þ¸ð¸® ´©¼ö·Î À̾îÁø´Ù. (VMÀº ³»ºÎÀûÀ¸·Î Ȱ¼º »óųª ´ë±â »óÅÂÀÇ ½º·¹µå °´Ã¼¾Ö ´ëÇÑ ÂüÁ¶¸¦ À¯ÁöÇÑ´Ù. µû¶ó¼­, ¿ÜºÎ¿¡ ¸í½ÃÀûÀÎ ÂüÁ¶°¡ ¾øÀ» °æ¿ì¶óµµ Á¾·áµÈ ½º·¹µå°¡ ¾Æ´Ï¸é °¡ºñÁö ÄÝ·ºÆ® µÇÁö ¾Ê´Â´Ù). Á¾°áÀÚ¸¦ »ç¿ëÇÏ¿© ÀÌ·¯ ¤¤°æ¿ì¿¡ ´ëÇÑ º¸°í¸¦ Çϵµ·Ï ÇØ ³õ¾ÒÁö¸¸ Á¾°áÀڴ ȣÃâµÇÁö ¾ÊÀ» °¡´É¼ºÀÌ Àֱ⿡ ¿Ïº®ÇÑ ÇØ°áÃ¥À¸·Î º¸±â¿£ ¹«¸®°¡ ÀÖ´Ù.
2. Timer¿¡ ´ëÇØ Thread.wait() ¸¦ È£ÃâÇÏ´Â °ÍÀº °¡´ÉÇÏÁö¸¸ ÀÌ È£ÃâÀº ¿ÀÁ÷ "continuous" Timer¿¡¸¸ À¯È¿ÇÒ °ÍÀÌ´Ù. ¸ðµç Timer¿¡ À¯È¿Çϱâ À§Çؼ­´Â ´ë½Å await() ¸Þ¼Òµå¸¦ »ç¿ëÇØ¾ß¸¸ ÇÑ´Ù. wait() °¡ ÇÊ¿äÇÑ °æ¿ì´Â ¿ÀÁ÷ InterruptedExceptionÀÇ ¹ß»ý¿¡ ´ëÇØ ¾Ë°í ½ÍÀº °æ¿ìÀε¥, await() ÀÇ °æ¿ì¿¡´Â InterruptedExceptionÀ» ´Ü¼øÈ÷ ¹«½ÃÇØ¹ö¸®±â ¶§¹®ÀÌ´Ù.

Version:
1.0 (2001-09-01)
Author:
wegra (Bok-Youn Lee)

Nested Class Summary
static class Timer.Test
          Å×½ºÆ®¿ë Ŭ·¡½º
 
Field Summary
static java.lang.String COMMAND_EXPIRED
          Timer°¡ ¸¸·áµÇ¾ú°Å³ª "ticked" µÇ¾úÀ» ¶§ ActinsListener¿¡°Ô·Î º¸³»Áö´Â "¾×¼Ç Ä¿¸Çµå"ÀÌ´Ù.
static java.lang.String COMMAND_STOPPED
          Timer°¡ »ç¿ëÀÚ¿¡ ÀÇÇØ Á¾·áµÇ¾úÀ» ¶§ ActionListener¿¡°Ô·Î º¸³»Áö´Â "¾×¼Ç Ä¿¸Çµå" ÀÌ´Ù.
static java.lang.Object MODE_CONTINUOUS
          MODE_CONTINUOUS Timer´Â ÀÏÁ¤ÇÑ ½Ã°£ °£°Ý¸¶´Ù ºí·ÏÅ· µÈ ½º·¹µåµéÀ» ³õ¾ÆÁָ鼭 °è¼Ó ½ÇÇàµÈ´Ù(°­Á¦·Î ¸ØÃâ ¼ö ÀÖ´Ù).
static java.lang.Object MODE_MULTI_SHOT
          MODE_MULTI_SHOT Timer´Â stop() ¸Þ¼Òµå°¡ È£ÃâµÇ¾î °­Á¦·Î ¸ØÃçÁö±â Àü±îÁö °è¼ÓÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
static java.lang.Object MODE_ONE_SHOT
          MODE_ONE_SHOT Timer´Â ÇÑ ¹ø¸¸ ¼öÇàµÈ ÈÄ ÀÚµ¿À¸·Î ¸ØÃá´Ù.
static int REQUEST_LIMIT
          addActionListener()¸¦ »ç¿ëÇØ¼­ TimerÀÇ ÅëÁö¸¦ ¹ÞÀ» ´ë»óÀ» Ãß°¡ÇØÁÙ ¼ö ÀÖ´Ù.
 
Constructor Summary
Timer(int delay)
          °è¼ÓÀûÀ¸·Î ¼öÇàµÇ´Â CONTINUOUS Timer¸¦ ¸¸µç´Ù.
Timer(int delay, java.lang.Object mode, boolean keepAlive)
          ¹Ð¸®ÃÊ ´ÜÀ§·Î ÁÖ¾îÁö´Â Áö¿¬ ½Ã°£ ÈÄ¿¡ ¸¸·áµÇ´Â Timer¸¦ »ý¼ºÇÑ´Ù.
 
Method Summary
 void addActionListener(java.awt.event.ActionListener observer)
          ´ÙÀ½¹ø Timer ÀÇ ÅëÁö¸¦ ¹Þ¾Æº¼ ¸®½º³Ê¸¦ Ãß°¡ÇÑ´Ù.
 boolean await()
          Long.MAX_VALUE ¸¸Å­ÀÇ ½Ã°£ ÈÄ¿¡ ¸¸·áµÈ´Ù
 boolean await(long timeout)
          Timer°¡ ¸¸·áµÉ ¶§±îÁö ±â´Ù¸°´Ù.
 void finalized()
          ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÉ ¶§ MODE_CONTINUOUS Timer³ª MODE_MULTI_SHOT Timer°¡ ¾ÆÁ÷ ¸ØÃçÁ® ÀÖÁö ¾Ê´Ù¸é ¹ö±×°¡ ÀÖ´Â °ÍÀÌ´Ù.
 void removeActionListener(java.awt.event.ActionListener observer)
          ¸®½º³Ê¸¦ Á¦°ÅÇÑ´Ù.
 void start()
          ¸¸·áµÈ Timer¸¦ Àç½ÃÀÛÇϰųª »õ·Ó°Ô Timer¸¦ ½ÃÀÛÇÑ´Ù.
 void stop()
          ÇöÀç Timer¸¦ °­Á¦·Î Á¾·áÇÑ´Ù.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REQUEST_LIMIT

public static final int REQUEST_LIMIT
addActionListener()¸¦ »ç¿ëÇØ¼­ TimerÀÇ ÅëÁö¸¦ ¹ÞÀ» ´ë»óÀ» Ãß°¡ÇØÁÙ ¼ö ÀÖ´Ù. °¢ ƽ¸¶´Ù º°µµÀÇ ½º·¹µå¿¡¼­ ÅëÁö¸¦ ÇØÁØ´Ù. °É¸®´Â ½Ã°£ÀÌ ´õ ±æ °æ¿ì ¸¦ ´ëºñÇØ ÅëÁö ¿äûÀ» ÀÏ´Ü Å¥¿¡ ½×¾Æ ³õ´Â´Ù. "REQUEST_LIMIT"´Â ÇÑ ½ÃÁ¡¿¡ ƽÀ» ÅëÁö¹ÞÀ» ¼ö ÀÕ´Â ÃÖ´ë ¸®½º³ÊÀÇ °³¼öÀÌ´Ù. ÀÌ °³¼ö¸¦ ³Ñ¾î¼­´Â ¿äûÀº ÀÚµ¿À¸·Î ¹«½ÃµÈ´Ù.

See Also:
Constant Field Values

MODE_CONTINUOUS

public static final java.lang.Object MODE_CONTINUOUS
MODE_CONTINUOUS Timer´Â ÀÏÁ¤ÇÑ ½Ã°£ °£°Ý¸¶´Ù ºí·ÏÅ· µÈ ½º·¹µåµéÀ» ³õ¾ÆÁָ鼭 °è¼Ó ½ÇÇàµÈ´Ù(°­Á¦·Î ¸ØÃâ ¼ö ÀÖ´Ù). ½ÇÁ¦·Î null °ªÀ» °®°í ÀÖ´Ù.


MODE_ONE_SHOT

public static final java.lang.Object MODE_ONE_SHOT
MODE_ONE_SHOT Timer´Â ÇÑ ¹ø¸¸ ¼öÇàµÈ ÈÄ ÀÚµ¿À¸·Î ¸ØÃá´Ù. start(0¸¦ »ç¿ëÇØ¼­ ´Ù½Ã ½ÃÀÛÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ °æ¿ì ³»ºÎÀûÀ¸·Î »õ·Ó°Ô ½º·¹µå°¡ »ý¼ºµÇ¾î ½ÇÇàµÈ´Ù.


MODE_MULTI_SHOT

public static final java.lang.Object MODE_MULTI_SHOT
MODE_MULTI_SHOT Timer´Â stop() ¸Þ¼Òµå°¡ È£ÃâµÇ¾î °­Á¦·Î ¸ØÃçÁö±â Àü±îÁö °è¼ÓÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÚÁÖ »ç¿ëµÇ´Â °æ¿ì¶ó¸é MODE_ONE_SHOT ÀÇ °æ¿ìº¸´Ù È¿À²ÀûÀÌ´Ù.


COMMAND_STOPPED

public static final java.lang.String COMMAND_STOPPED
Timer°¡ »ç¿ëÀÚ¿¡ ÀÇÇØ Á¾·áµÇ¾úÀ» ¶§ ActionListener¿¡°Ô·Î º¸³»Áö´Â "¾×¼Ç Ä¿¸Çµå" ÀÌ´Ù.

See Also:
Constant Field Values

COMMAND_EXPIRED

public static final java.lang.String COMMAND_EXPIRED
Timer°¡ ¸¸·áµÇ¾ú°Å³ª "ticked" µÇ¾úÀ» ¶§ ActinsListener¿¡°Ô·Î º¸³»Áö´Â "¾×¼Ç Ä¿¸Çµå"ÀÌ´Ù.

See Also:
Constant Field Values
Constructor Detail

Timer

public Timer(int delay)
°è¼ÓÀûÀ¸·Î ¼öÇàµÇ´Â CONTINUOUS Timer¸¦ ¸¸µç´Ù.


Timer

public Timer(int delay,
             java.lang.Object mode,
             boolean keepAlive)
¹Ð¸®ÃÊ ´ÜÀ§·Î ÁÖ¾îÁö´Â Áö¿¬ ½Ã°£ ÈÄ¿¡ ¸¸·áµÇ´Â Timer¸¦ »ý¼ºÇÑ´Ù.
ÀϹÝÀûÀ¸·Î, Timer´Â ºí·ÏÅ·µÇ¾î ÀÖ´Â ½º·¹µå°¡ ±ú¾î³ªÀÚ¸¶ÀÚ ½ÇÇàµÇ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ °¡Àå ³ôÀº ¿ì¼± ¼øÀ§¸¦ »ç¿ëÇÑ´Ù.
¶§¹®¿¡ Timer´Â ½º·¹µå ±×·ì¿¡¼­ °¡´ÉÇÑ ³ôÀº ¿ì¼±¼øÀ§¸¦ °¡Áö´Â ½º·¹µå·Î ÀÛµ¿ÇØ¾ß ÇÑ´Ù. ÇÏÁö¸¸ Timer´Â ´ëºÎºÐÀÇ ½Ã°£À» ·ù¸é »óÅ·Πº¸³»¹Ç·Î ´Ù¸¥ ½º·¹µåµéÀÇ ½ÇÇàÀ» Å©°Ô ¹æÇØÇÏÁö´Â ¾Ê´Â´Ù.

Parameters:
delay - ¹Ð¸®ÃÊ ´ÜÀ§ÀÇ ¸¸·á ½Ã°£
mode - ´ÙÀ½ÀÇ »ó¼ö Áß Çϳª Timer.MODE_OCNTINUOUS Timer´Â °è¼ÓÀûÀ¸·Î ½ÇÇàµÈ´Ù. ¸¸¾à Á¾·áÇϰíÀÚ ÇÒ ¶§¿¡´Â ¸í½ÃÀûÀ¸·Î stop()À» È£ÃâÇØ¾ß ÇÑ´Ù. Timer.MODE_ONE_SHOT Timer°¡ ÇÑ ¹ø¸¸ ½ÇÇàµÈ ÈÄ ¸ØÃá´Ù. ÀÌ ¸ðµåÀÇ Timer´Â ¸í½ÃÀûÀ¸·Î Á¾·áÇÒ Çʿ䰡 ¾ø´Ù. Timer.MODE_MULTI_SHOT ±âº»ÀûÀ¸·Î ONE_SHOT Timer¿Í °°Áö¸¸ Á» ´õ È¿À²ÀûÀ¸·Î Àç½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Á¾·áÇϰíÀÚ ÇÒ ¶§¿£ ¸í½ÃÀûÀ¸·Î stop()¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.
keepAlive - ±âº»ÀûÀ¸·Î TimerÀÇ ½Ã°£ °ü¸® ½º·¹µå´Â µ¥¸ó ½º·¹µåÀÌ´Ù. ÀÌ´Â Timer°¡ ÀÛµ¿ÁßÀÌ¶óµµ ÇÁ·Î±×·¥Àº Á¾·áµÉ ¼ö ÀÖÀ½À» ¶æÇÑ´Ù. ÀÌ·± Ư¼ºÀ¸·Î ÀÎÇØ ½ÌŬ ½º·¹µå ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ¾î¶² ÀÏÀ» Ŭ·° ƽÀÌ ¹ß»ýÇÞÀ» ¶§ ÇϰíÀÚ ÇÑ´Ù¸é ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ÀÌ °ªÀ» true·Î ÁÖ¸é TimerÀÇ ½Ã°£ °ü¸® ½º·¹µå¸¦ µ¥¸óÀ¸·Î ¼³Á¤ÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­, Timer¸¦ Á¾·áÇϱâ À§Çؼ­´Â ¸í½ÃÀûÀ¸·Î stop() À» È£ÃâÇϰųª System.exit()¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ¸¸·áµÈ MODE_ONE_SHOT Timer³ª MODE_MULTI_SHOT Timer´Â ÇÁ·Î¼¼½º¸¦ À¯Áö½Ã۵µ·Ï ÇÏÁö ¾Ê´Â´Ù.
Method Detail

addActionListener

public void addActionListener(java.awt.event.ActionListener observer)
´ÙÀ½¹ø Timer ÀÇ ÅëÁö¸¦ ¹Þ¾Æº¼ ¸®½º³Ê¸¦ Ãß°¡ÇÑ´Ù. ¸®½º³Ê´Â TimerÀÇ ½Ã°£ °ü¸® ½º·¹µå¿¡¼­ ÅëÁö¸¦ ¹Þ´Â °ÍÀÌ ¾Æ´Ï¶ó fNotifier ½º·¹µå¿¡¼­ ÅëÁö¸¦ ¹Þ´Â´Ù. ÀÌ·± ¹æ½ÄÀ» »ç¿ëÇϸé ÅëÁö¿¡ °É¸®´Â ½Ã°£ÀÌ TimerÀÇ ½Ã°£ °ü¸®¿¡ Å©°Ô ¿µÇâÀ» ÁÖÁö ¾Ê°ÔµÈ´Ù. ActionEvent·Î ÀüÇØÁö´Â "¾×¼Ç Ä¿¸Çµå"·Î´Â COMMAND_STOPPED¿Í COMMAND_EXPIRED °¡ ¿Ã ¼ö ÀÖ´Ù. ÅëÁö½Ã¿¡´Â TimerÀÇ ÅëÁö°¡ TimerÀÇ ÁßÁö¿¡ ÀÇÇÑ °ÍÀÎÁö, ¾Æ´Ï¸é Á¤»óÀûÀ¸·Î ¸¸·áµÇ¾î¼­ ±×·± °ÍÀÎÁö¸¦ ÀÌ ¾×¼Ç Ä¿¸Çµå¸¦ »ç¿ëÇØ¼­ ±¸ºÐÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. Timer°¡ ¿Ã¹Ù¸£°í ÀÛµ¿Çϱâ À§Çؼ­´Â ¸ðµç ¸®½º³Êµé¿¡°Ô ÅëÁöÇÒ ¶§±îÁö °É¸®´Â ÃÑ ½Ã°£ÀÌ Æ½°ú ƽ °£¿¡ °É¸®´Â ½Ã°£º¸´Ù Àû°Ô ÇØ¾ß¸¸ ÇÑ´Ù. ½Ã½ºÅÛ¿¡ ÀÖÀ» ¼ö ÀÖ´Â ¾à°£ÀÇ ºÎÁ¤È®ÇÔÀ» ¾î´ÀÁ¤µµ ±Øº¹Çϱâ À§Çؼ­ ƽÀÌ Å¥À×µÇÁö¸¸ 8°³ ÀÌ»óÀÇ Æ½ÀÌ Å¥À׵ǾúÀ» °æ¿ì ±× ÀÌ»óÀÇ Æ½Àº ¹«½ÃµÈ´Ù.


await

public boolean await()
Long.MAX_VALUE ¸¸Å­ÀÇ ½Ã°£ ÈÄ¿¡ ¸¸·áµÈ´Ù


await

public boolean await(long timeout)
Timer°¡ ¸¸·áµÉ ¶§±îÁö ±â´Ù¸°´Ù. ÀÌ¹Ì ¸¸·áµÈ MODE_ONE_SHOT Timer¿Í MODE_MULTI_SHOT TimerÀÇ °æ¿ì °ð¹Ù·Î º¹±ÍÇÑ´Ù. ÀÌ·± °æ¿ì ¿Ü¿¡´Â Ç×»ó Timer°¡ ¸¸·áµÉ ¶§±îÁö ºí·ÏÅ· µÈ´Ù. (¾ÆÁ÷ ½ÃÀÛµÇÁö ¾ÊÀº Timer Æ÷ÇÔ).

Returns:
Á¤»óÀûÀÎ »óȲ¿¡¼­ Timer°¡ ¸¸·áµÈ °æ¿ì¶ó¸é true¸¦ ¹ÝȯÇϰí, Á¾·á¿¡ ÀÇÇØ Timer°¡ Á¤ÁöµÈ °æ¿ì¶ó¸é false¸¦ ¹ÝȯÇÑ´Ù.

finalized

public void finalized()
ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÉ ¶§ MODE_CONTINUOUS Timer³ª MODE_MULTI_SHOT Timer°¡ ¾ÆÁ÷ ¸ØÃçÁ® ÀÖÁö ¾Ê´Ù¸é ¹ö±×°¡ ÀÖ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ¹ö±×¸¦ ã¾Æ³»±â À§Çؼ­ ¹ö±×°¡ ÀÖ´Ù´Â ¿¡·¯ ¸Þ½ÃÁ Ãâ·ÂÇϵµ·Ï Çß´Ù. ¹°·Ð, ÀÚ¹ÙÀÇ Á¾°áÀÚ(finalizer())´Â Ç×»ó È£ÃâµÇÁö ¾ÊÀ¸¹Ç·Î ÀÌ ¸Þ¼Òµå¿¡ ÀüÀûÀ¸·Î ÀÇÁ¸Çؼ­´Â ¾ÈµÈ´Ù.


removeActionListener

public void removeActionListener(java.awt.event.ActionListener observer)
¸®½º³Ê¸¦ Á¦°ÅÇÑ´Ù.


start

public void start()
¸¸·áµÈ Timer¸¦ Àç½ÃÀÛÇϰųª »õ·Ó°Ô Timer¸¦ ½ÃÀÛÇÑ´Ù. ¸¸¾à Timer°¡ ÀÌ¹Ì ½ÇÇàÁßÀ̶ó¸é Áö³­ ½Ã°£À» ÃʱâÄ¡·Î µ¹·Á³õ´Â´Ù.


stop

public void stop()
ÇöÀç Timer¸¦ °­Á¦·Î Á¾·áÇÑ´Ù. À̶§ ºí·ÏÅ·µÈ ¸ðµç ½º·¹µå¸¦ ³õ´Â´Ù. Timer´Â start()¸¦ È£ÃâÇÔÀ¸·Î½á Àç½ÃÀÛµÉ ¼ö ÀÖ´Ù. ÇöÀç´Â ÀϹÝÀûÀÎ ¸¸·á·Î ÀÎÇØ ÀÎÅÍ·´Æ®°¡ °É¸° °ÍÀÎÁö stop() ¿äû¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®°¡ °É¸° °ÍÀÎÁö¸¦ ±¸ºÐÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´Ù.