|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
public interface Lock
Lock ±¸ÇöÀº, synchronized
¸Þ¼µå³ª ¹®ÀåÀ» »ç¿ëÇÏ´Â °ÍÀ¸·Î Ãëµæ °¡´ÉÇÑ ¶ô Á¶ÀÛº¸´Ù ±¤¹üÀ§ÇÑ ¶ô Á¶ÀÛÀ» Á¦°øÇÕ´Ï´Ù. ÀÌ ±¸ÇöÀ» »ç¿ëÇϸé, º¸´Ù À¯¿¬ÇÑ ±¸Á¶³ª ¿ÏÀüÈ÷ ´Ù¸¥ ÇÁ·ÎÆÛƼ¸¦ º¸°ü À¯ÁöÇϰųª °ü·ÃµÈ º¹¼ö Condition
°´Ã¼¸¦ Áö¿ø
ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
¶ôÀº º¹¼öÀÇ thread¿¡
ÇÑ °øÀ¯ ÀÚ¿ø¿¡ÀÇ ¾×¼¼½º¸¦ Á¦¾îÇϱâ À§ÇÑ ÅøÀÔ´Ï´Ù. º¸Åë, ¶ôÀº °øÀ¯ ÀÚ¿ø¿¡ÀÇ ¹èŸÀûÀÎ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù. ¶ôÀ» ÃëµæÇÒ ¼ö ÀÖ´Â °ÍÀº ÇÑ ¹ø¿¡ 1°³ÀÇ thread »ÓÀ̾î¼, ¸ðµç °øÀ¯ ÀÚ¿ø¿¡ ¾×¼¼½º ÇÏ·Á¸é ¶ôÀ» ÃÖÃÊ·Î ÃëµæÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ´Ù¸¸, ReadWriteLock
read ¶ôµîÀÇ ÀϺÎÀÇ ¶ô¿¡¼´Â °øÀ¯ ÀÚ¿ø¿¡ÀÇ µ¿½Ã ¾×¼¼½º°¡ Çã°¡µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
synchronized ¸Þ¼µå³ª ¹®ÀåÀÇ »ç¿ë¿¡ÀÇÇØ °¢ °´Ã¼¿¡ °ü·ÃµÈ ¾Ï¹¬ÀÇ °¨½Ã ¶ô¿¡ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, ¶ôÀÇ Ãëµæ ¹× ÇØ¹æÀº ¸ðµÎ ºí·Ï ±¸Á¶¿¡ µû¶ó ½Ç½ÃÇÏ´Â °ÍÀÌ ¿ä±¸µË´Ï´Ù. ÀÌ ¶§¹®¿¡ º¹¼öÀÇ ¶ôÀÌ ÃëµæµÇ¾úÀ» °æ¿ì, ±× ÇØ¹æÀº Ãëµæ°ú´Â ¹Ý´ëÀÇ ¼ø¼·Î ½Ç½ÃÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, ¸ðµç ¶ôÀÇ ÇØ¹æÀº ±×°ÍµéÀÌ ÃëµæµÈ ¹üÀ§³»¿¡¼ ½Ç½ÃÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
synchronized ¸Þ¼µå ¹× ¹®ÀåÀÇ ¹üÀ§ µµ±¸´Â °¨½Ã ¶ôÀÇ ÇÁ·Î±×·¡¹ÖÀ» Å«ÆøÀ¸·Î ¿ëÀÌÇϰÔÇÔ°ú ÇÔ²², ¶ô¿¡ °ü·ÃÇÑ ÀϹÝÀûÀÎ ÇÁ·Î±×·¡¹Ö ¿¡·¯ÀÇ ´ëºÎºÐÀ» ÇÇÇϴµ¥ µµ¿òÀÌ µË´Ï´Ù¸¸, ¶ôÀÇ Á¶ÀÛÀ» º¸´Ù À¯¿¬ÇÏ°Ô ½Ç½ÃÇÒ Çʿ䰡 ÀÖ´Â »óȲÀÌ Á¸ÀçÇÕ´Ï´Ù. ¿¹¸¦ µé¾î µ¥ÀÌÅÍ ±¸Á¶¿¡ µ¿½Ã¿¡ ¾×¼¼½º ÇÏ´Â ÀϺÎÀÇ traversal ¾Ë°í¸®Áò¿¡¼´Â ¡¸hand-over-hand¡¹¶Ç´Â ¡¸chain locking¡¹¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ³ëµå A ¶ôÀ» ÃëµæÇØ, ´ÙÀ½¿¡ ³ëµå B ¶ôÀ» ÃëµæÇØ, ´ÙÀ½¿¡ A¸¦ ÇØ¹æÇØ C¸¦ ÃëµæÇØ, ´ÙÀ½¿¡ B¸¦ ÇØ¹æÇØ D¸¦ ÃëµæÇÑ´Ù, ¶ó°í ÇÏ´Â »óÅ¿¡ 󸮸¦ ÁøÇà½Ãŵ´Ï´Ù. Lock ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸé, ´Ù¸¥ ½ºÄÚÇÁ³»¿¡¼ ¶ôÀ» Ãëµæ ¹× ÇØ¹æÇϰųª º¹¼öÀÇ ¶ôÀ» ÀÓÀÇÀÇ ¼ø¼·Î Ãëµæ ¹× ÇØ¹æÇÏ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µÇ±â ¶§¹®¿¡ ÀÌ·± Á¾·ùÀÇ Å×Å©´ÐÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
ÀÌ¿Í °°ÀÌ À¯¿¬¼ºÀÌ ³ô¾ÆÁö¸é, »õ·Î¿î Ã¥ÀÓµµ ¹ß»ýÇÕ´Ï´Ù. ºí·Ï ±¸Á¶ ¶ôÀÌ Á¸ÀçÇÏÁö ¾Ê°Ô µÇ´Â °ÍÀ¸·Îsynchronized ¸Þ¼µå ¹× ¹®ÀåÀ¸·Î ½ÇÇàµÇ´Â ¶ôÀÇ ÀÚµ¿ ÇØ¹æÀÌ ±â´ÉÇÏÁö ¾Ê°Ô µË´Ï´Ù. ´ëü·ÎÀÇ °æ¿ì, ´ÙÀ½ÀÇ Äڵ带 »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Lock ±¸ÇöÀº ¶ô ( Lock Ŭ·¡½º´Â º¸ÁõµÈ ¼ø¼ ºÙ¿© ÀçÀÔ ºÒ°¡´ÉÇÑ »ç¿ë, µ¥µå ·ÏÀÇ °ËÃâ µî, ¾Ï¹¬ÀÇ °¨½Ã ¶ô°ú´Â ¿ÏÀüÈ÷ ´Ù¸¥ µ¿ÀÛÀ̳ª ½Ã¸àƽ½º¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸ÇöÀÌ ÀÌ·¯ÇÑ Æ¯¼ö ½Ã¸àƽ½º¸¦ Á¦°øÇÏ´Â °æ¿ì, ±¸ÇöÀº ÀÌ·¯ÇÑ ½Ã¸àƽ½º¸¦ ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Lock ÀνºÅϽº´Â º¸Åë
ÀÇ °´Ã¼¿¡ Áö³ªÁö ¾Ê°í, ±× ÀÚü¸¦ synchronized ¹®ÀÇ Å¸°ÙÀ¸·Î¼ »ç¿ëÇÒ ¼ö ÀÖ´Â °Í¿¡ À¯ÀÇÇØ ÁÖ¼¼¿ä. Lock ÀνºÅϽºÀÇ °¨½Ã ¶ôÀ» ¾ò´Â °ÍÀ¸·Î ±× ÀνºÅϽºÀÇ ¸î°³ÀÇ Æ¯È÷ ¸í±âµÇ¾î ÀÖÁö ¾ÊÀº ÇÑ, ¸î°³ÀÇ ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÇØ null Ä¡¸¦ °Ç³×ÁÖ¸é, ¸ðµç Lock ±¸ÇöÀº ºôÆ®ÀÎ °¨½Ã ¶ôÀÌ Á¦°øÇÏ´Â °Í°ú °°Àº ¸Þ¸ð¸® µ¿±â ½Ã¸àƽ½º¸¦ ½ÃÇàÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ±× ³»¿ëÀ» ³ªÅ¸³À´Ï´Ù. ¶ô ÃëµæÀÇ 3°³ÀÇ Çü½Ä (ÀÎÅÍ·´Æ®°¡´É, ÀÎÅÍ·´Æ® ºÒ°¡ ¹× ½Ã°¢ ÁöÁ¤)¿¡¼´Â ÆÛÆ÷¸Õ½º Ư¼º, ¼ø¼ºÎÀÇ º¸Áõ, ´Ù¸¥ ±¸Çö ǰÁúÀÌ ´Ù¸¨´Ï´Ù. ¶Ç, ¡¸ÁøÇàÁßÀÇ¡¹¶ô Ãëµæ¿¡ÀÇ ³¢¾îµé¾î ±â´Éµµ, ÁöÁ¤µÈ Lock Ŭ·¡½º¿¡¼´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ¶§¹®¿¡
3°³ÀÇ ¶ô Ãëµæ Çü½Ä ¸ðµÎ·Î ±¸ÇöÀÌ ¾ö¹ÐÇÏ°Ô °°Àº º¸ÁõÀ̳ª ½Ã¸àƽ½º¸¦ Á¤ÀÇÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¶Ç, ÁøÇàÁßÀÇ ¶ô ÃëµæÀÇ ÀÎÅÍ·´Æ®¸¦ Áö¿ø
ÇÒ Çʿ䵵 ¾ø½À´Ï´Ù. ±¸ÇöÀº °¢ ¶ô ¸Þ¼µåÀÇ Á¦°øÇÏ´Â ½Ã¸àƽ½º ¹× º¸ÁõÀ» ¸íÈ®ÇÏ°Ô ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, ¶ô ÃëµæÀÇ ÀÎÅÍ·´Æ®°¡ Áö¿ø
µÇ´Â ¹üÀ§³» (Àüü ¶Ç´Â ¸Þ¼µå ¿£Æ®¸®¸¸)¿¡¼
ÀÌ ÀÎÅÍÆäÀ̽º·Î Á¤ÀÇµÈ ÀÎÅÍ·´Æ® ½Ã¸àƽ½º¿¡ µû¸¦ Çʿ䵵 ÀÖ½À´Ï´Ù.
º¸Åë, ÀÎÅÍ·´Æ®´Â Ãë¼Ò¸¦ ¹ÌÇØ, ÀÎÅÍ·´Æ®ÀÇ Ã¼Å©´Â ºó¹øÇÏ°Ô ÇàÇØÁö´Â °ÍÀº ¾Æ´Ï±â ¶§¹®¿¡
±¸ÇöÀº º¸Åë
ÀÇ ¸Þ¼µå º¹±Í¿¡ ´ëÇÑ ÀÎÅÍ·´Æ®¿¡ ±àÁ¤ÀûÀ¸·Î ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ´Ù¸¥ ¾×¼ÇÀÌ thread¸¦ ºí·Ï ÇØÁ¦ÇÑ µÚ¿¡
ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇß´ø °Í(Àû)ÀÌ ³ªÅ¸³ª´Â °æ¿ì¿¡µµ µé¾î¸ÂÀ¾´Ï´Ù. ±¸ÇöÀº ÀÌ µ¿ÀÛÀ» ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¶ôÀ» »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì, ÇöÀçÀÇ thread´Â threadÀÇ ½ºÄÉÁÙ¸µ¿¡ °üÇØ¼ ¹«È¿°¡ µÇ¾î, ¶ôÀÌ ÃëµæµÉ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
±¸Çö»óÀÇ °í·Á»çÇ×
Lock ±¸ÇöÀº µ¥µå ·ÏÀ» ÀÏÀ¸Å°´Â È£ÃâµîÀÇ ¶ôÀÇ ºÎÁ¤»ç¿ëÀ» °ËÃâÇØ, ±×·¯ÇÑ »óȲÀ¸·Î (üũµÇÁö ¾Ê´Â´Ù) = ¿¹¿Ü¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. Lock ±¸Çö¿¡ÀÇÇØ ÇØ´çÇÏ´Â »óȲ ¹× ¿¹¿ÜÀÇ ÇüŸ¦ ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ¿ë °¡´ÉÇÑ °æ¿ì¿¡ ¶ôÀ» ÃëµæÇØ, °ð¹Ù·Î º¹±ÍÇÕ´Ï´Ù.
¶ôÀ» »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì, ÇöÀçÀÇ thread´Â threadÀÇ ½ºÄÉÁÙ¸µ¿¡ °üÇØ¼ ¹«È¿°¡ µÇ¾î, ´ÙÀ½ÀÇ 2°³
Áß ÇÑÂÊÀÌ ÀϾ ¶§±îÁö ´ë±âÇÕ´Ï´Ù. ÇöÀçÀÇ thread·Î
±¸Çö»óÀÇ °í·Á»çÇ×
¾î´À »óȲÇÏ¿¡¼´Â ¶ô Ãëµæ¿¡ ³¢¾îµéÁö ¸øÇϰí, °æ¿ì¿¡ µû¶ó¼´Â ºÎÇÏÀÇ Å« Á¶ÀÛÀÌ µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¡¸Ó´Â ÀÌ·¯ÇÑ °æ¿ì°¡ ÀÖ´Â °ÍÀ» ½ÄÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. ±¸ÇöÀº ÇØ´çÇÏ´Â »óȲÀ» ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
±¸ÇöÀº º¸Åë
ÀÇ ¸Þ¼µå º¹±Í¿¡ ´ëÇÑ ÀÎÅÍ·´Æ®¿¡ ±àÁ¤ÀûÀ¸·Î ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù.
Lock ±¸ÇöÀº µ¥µå ·ÏÀ» ÀÏÀ¸Å°´Â È£ÃâµîÀÇ ¶ôÀÇ ºÎÁ¤»ç¿ëÀ» °ËÃâÇØ, ±×·¯ÇÑ »óȲÀ¸·Î (üũµÇÁö ¾Ê´Â´Ù) = ¿¹¿Ü¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. Lock ±¸Çö¿¡ÀÇÇØ ÇØ´çÇÏ´Â »óȲ ¹× ¿¹¿ÜÀÇ ÇüŸ¦ ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
°¡´ÉÇÑ °æ¿ì¿¡ ¶ôÀ» ÃëµæÇØ, °ª true·Î
°ð¹Ù·Î º¹±ÍÇÕ´Ï´Ù. ¶ôÀÌ ÀÌ¿ë °¡´ÉÇÏÁö ¾ÊÀº °æ¿ì, ÀÌ ¸Þ¼µå´Â °ª false·Î
°ð¹Ù·Î º¹±ÍÇÕ´Ï´Ù.
ÀÌ ¸Þ¼µåÀÇ º¸Åë
ÀÇ »ç¿ë ¹æ¹ýÀ» ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.
¶ôÀÌ ÀÌ¿ë °¡´ÉÇÑ °æ¿ì, ÀÌ ¸Þ¼µå´Â Áï½Ã °ª true·Î
º¹±ÍÇÕ´Ï´Ù. ¶ôÀ» ÀÌ¿ëÇÒ ¼ö ¾ø´Â °æ¿ì, ÇöÀçÀÇ thread°¡ thread ½ºÄÉÁÙ¸µ¿¡ °üÇØ¼ ¹«È¿°¡ µÇ¾î, ´ÙÀ½ÀÇ 3 °³Áß ÇÑÂÊÀÌ ÀϾ ¶§±îÁö ´ë±âÇÕ´Ï´Ù. ¶ôÀÌ ÃëµæµÇ¸é, true°¡ ¸®Åϵ˴ϴÙ
.
ÇöÀçÀÇ thread·Î
ÁöÁ¤µÈ ´ë±â ½Ã°£ÀÌ °æ°úÇϸé, °ª false°¡ ¸®Åϵ˴ϴÙ
. ½Ã°£ÀÌ Á¦·Î ¶Ç´Â ±×°Íº¸´Ù ÀÛÀº °æ¿ì, ¸Þ¼µå´Â ´ë±âÇÏÁö ¾Ê½À´Ï´Ù.
±¸Çö»óÀÇ °í·Á»çÇ×
¾î´À »óȲÇÏ¿¡¼´Â ¶ô Ãëµæ¿¡ ³¢¾îµéÁö ¸øÇϰí, °æ¿ì¿¡ µû¶ó¼´Â ºÎÇÏÀÇ Å« Á¶ÀÛÀÌ µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¡¸Ó´Â ÀÌ·¯ÇÑ °æ¿ì°¡ ÀÖ´Â °ÍÀ» ½ÄÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. ±¸ÇöÀº ÇØ´çÇÏ´Â »óȲÀ» ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
±¸ÇöÀº º¸Åë
ÀÇ ¸Þ¼µå º¹±Í¿¡ ´ëÇÑ ÀÎÅÍ·´Æ®, ¶Ç´Â ŸÀÓ ¾Æ¿ôÀÇ ¸®Æ÷Æ®¿¡ ±àÁ¤ÀûÀ¸·Î ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù.
Lock ±¸ÇöÀº µ¥µå ·ÏÀ» ÀÏÀ¸Å°´Â È£ÃâµîÀÇ ¶ôÀÇ ºÎÁ¤»ç¿ëÀ» °ËÃâÇØ, ±×·¯ÇÑ »óȲÀ¸·Î (üũµÇÁö ¾Ê´Â´Ù) = ¿¹¿Ü¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. Lock ±¸Çö¿¡ÀÇÇØ ÇØ´çÇÏ´Â »óȲ ¹× ¿¹¿ÜÀÇ ÇüŸ¦ ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
±¸Çö»óÀÇ °í·Á»çÇ×
º¸Åë, Lock ±¸ÇöÀº ¶ôÀ» ÇØ¹æ °¡´ÉÇÑ thread¿¡ °üÇØ¼ Á¦ÇÑÀ» ºÎ°úÇØ (ÀϹÝÀûÀ¸·Î ¶ôÀÇ È¦´õ¸¸À» ÇØ¹æÇÒ ¼ö ÀÖ´Ù), Á¦ÇÑÀÌ Ä§¹üµÇ¾úÀ» °æ¿ì¿¡´Â (üũµÇÁö ¾Ê´Â´Ù) = ¿¹¿Ü¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. Á¦ÇÑ ¹× ¿¹¿ÜÀÇ ÇüÅ´ ¸ðµÎ, Lock ±¸Çö¿¡ ÀÇÇØ ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
»óÅÂÀÇ ´ë±â¸¦ ½ÇÇàÇϱâ Àü¿¡
ÇöÀçÀÇ thread°¡ ¶ôÀ» º¸°ü À¯ÁöÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±¸Çö»óÀÇ °í·Á»çÇ×
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ
ÂüÁ¶ÇϽʽÿÀ.
¶ô ¹× ¶ô ÇØÁ¦°¡ ´Ù¸¥ ½ºÄÚÇÁ³»¿¡¼ ÇàÇØÁö´Â °æ¿ì, ¶ôÀÇ º¸°ü À¯ÁöÁß¿¡ ½ÇÇàµÇ´Â ¸ðµç Äڵ尡 try-finally ¶Ç´Â try-catch¿¡ ÀÇÇØ º¸È£µÇ¾î Çʿ信 µû¶ó¼ ¶ôÀÌ È®½ÇÈ÷ ÇØ¹æµÇµµ·Ï ÁÖÀ§¸¦ ±â¿ïÀÏ Çʿ䰡 ÀÖ½À´Ï´Ù.
tryLock()
)¸¦ ÃëµæÇϱâ À§ÇÑ ºñºí·Ï ½ÃÇà, ³¢¾îµé¾î °¡´ÉÇÑ ¶ô (lockInterruptibly()
³ª ŸÀÓ ¾Æ¿ô °¡´ÉÇÑ ¶ô (tryLock(long, TimeUnit)
)¸¦ ¾ò´Â ½ÃÇàÀ» Á¦°øÇÏ´Â °ÍÀ¸·Î½á, synchronized ¸Þ¼µå ¹× ¹®Àå¿¡ÀÇ Ãß°¡ ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
lock()
¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î´Â ƯÈ÷ °ü°è°¡ ¾ø½À´Ï´Ù. È¥¶õÀ» ÇÇÇϱ⠶§¹®¿¡
µ¶ÀÚÀûÀÎ ±¸Çö À̿ܿ¡¼´Â ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î Lock ÀνºÅϽº¸¦ °áÄÚ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.
NullPointerException
À» ¹ß»ý½Ãŵ´Ï´Ù.
¸Þ¸ð¸®ÀÇ µ¿±âÈ
¼º°øÇÏÁö ¾Ê´Â ¶ô ¹× ¶ô ÇØÁ¦ Á¶ÀÛ ¹× ÀçÀÔ °¡´ÉÇÑ ¶ô/¶ô ÇØÁ¦ Á¶ÀÛÀº ¸Þ¸ð¸® µ¿±â È¿°ú¸¦ ÀÏÀý ÇÊ¿ä·Î ÇÏÁö ¾Ê½À´Ï´Ù.
±¸Çö»óÀÇ °í·Á»çÇ×
ReentrantLock
,
Condition
,
ReadWriteLock
¸Þ¼µå °³¿ä
void
lock ()
¶ôÀ» ÃëµæÇÕ´Ï´Ù.
void
lockInterruptibly ()
ÇöÀçÀÇ thread°¡ interrupted
°¡ ¾Æ´Ñ ÇÑ, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
Condition
newCondition ()
ÀÌ Lock ÀνºÅϽº¿¡ ¹ÙÀÎµå µÈ »õ·Î¿î Condition
¸¦
¸®ÅÏÇÕ´Ï´Ù.
boolean
tryLock ()
È£Ãâ½Ã¿¡ ¶ôµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡°Ô¸¸, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
boolean
tryLock (long time,
TimeUnit unit)
ÁöÁ¤µÈ ´ë±â ½Ã°£³»¿¡ ¶ôÀÌ ÀÌ¿ë °¡´ÉÇϰí, ÇöÀçÀÇ thread·ÎÀÎÅÍ·´Æ®
°¡ ¹ß»ýÇϰí ÀÖÁö ¾Ê´Â °æ¿ì¿¡
¶ôÀ» ÃëµæÇÕ´Ï´Ù.
void
unlock ()
ÀÌ ¶ôÀ» ÇØÁ¦ÇÕ´Ï´Ù.
¸Þ¼µåÀÇ »ó¼¼
lock
void lock()
lockInterruptibly
void lockInterruptibly()
throws InterruptedException
interrupted
°¡ ¾Æ´Ñ ÇÑ, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
ÀÎÅÍ·´Æ®
¸¦ ½Ç½ÃÇØ, ¶ô ÃëµæÀÇ ÀÎÅÍ·´Æ®°¡ Áö¿ø
µÈ´Ù
ÀÎÅÍ·´Æ®
°¡ ¹ß»ýÇÏ´Â °æ¿ì,
InterruptedException
ÀÌ Throw µÇ¾î ÇöÀçÀÇ threadÀÇ ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº°¡ Ŭ¸®¾î µË´Ï´Ù.
InterruptedException
- ¶ôÀÇ ÃëµæÁß ( ¹× ¶ô ÃëµæÀÇ Áß´ÜÀÌ Áö¿ø
µÇ°í ÀÖ´Â »óȲ)¿¡
ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â °æ¿ìThread.interrupt()
tryLock
boolean tryLock()
ÀÌ »ç¿ë¿¡ÀÇÇØ ¶ôÀÌ ÃëµæµÇ¾úÀ» °æ¿ì¿¡ ¶ôÀÌ ÇØÁ¦µÇ´Â °Í ¹× ¶ôÀÌ ÃëµæµÇÁö ¾Ê¾Ò´ø °æ¿ì¿¡ ¶ô ÇØÁ¦¸¦ ½ÃµµÇÏÁö ¾Ê´Â °ÍÀÌ º¸ÁõµË´Ï´Ù.
tryLock
boolean tryLock(long time,
TimeUnit unit)
throws InterruptedException
ÀÎÅÍ·´Æ®
°¡ ¹ß»ýÇϰí ÀÖÁö ¾Ê´Â °æ¿ì¿¡
¶ôÀ» ÃëµæÇÕ´Ï´Ù.
ÀÎÅÍ·´Æ®
¸¦ ½Ç½ÃÇØ, ¶ô ÃëµæÀÇ ÀÎÅÍ·´Æ®°¡ Áö¿ø
µÈ´Ù
ÀÎÅÍ·´Æ®
°¡ ¹ß»ýÇÏ´Â °æ¿ì,
InterruptedException
ÀÌ Throw µÇ¾î ÇöÀçÀÇ threadÀÇ ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº°¡ Ŭ¸®¾î µË´Ï´Ù.
time
- ¶ôÀÇ ÃÖÀå ´ë±â ½Ã°£unit
- time ÀμöÀÇ ½Ã°£ ´ÜÀ§
InterruptedException
- ¶ôÀÇ ÃëµæÁß ( ¹× ¶ô ÃëµæÀÇ Áß´ÜÀÌ Áö¿ø
µÇ°í ÀÖ´Â »óȲ)¿¡
ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â °æ¿ìThread.interrupt()
unlock
void unlock()
newCondition
Condition newCondition()
Condition
¸¦
¸®ÅÏÇÕ´Ï´Ù.
Condition.await()
¿¡ÀÇ È£Ãâ¿¡ÀÇÇØ ´ë±â°¡ º¹±ÍÇϱâ Àü¿¡ ¶ôÀ» ´ë±â ¹× ÀçÃëµæÇϱâ Àü¿¡
¶ôÀÌ ¿øÀÚÀûÀ¸·Î ÇØ¹æµË´Ï´Ù.
Condition
ÀνºÅϽºÀÇ ¾ö¹ÐÇÑ Á¶ÀÛÀº Lock ±¸Çö¿¡
Á¸Çϱâ À§ÇØ, ±¸Çö¿¡ ÀÇÇØ ¹®¼ÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Condition
UnsupportedOperationException
- ÀÌ Lock ±¸ÇöÀÌ »óŸ¦ Áö¿ø
ÇÏÁö ¾Ê´Â °æ¿ì
°³¿ä
ÆÐŰÁö
Ŭ·¡½º
»ç¿ë
°èÃþ Æ®¸®
ºñÃßõ API
»öÀÎ
ÇïÇÁ
JavaTM 2 Platform
Standard Ed. 5.0
ÀÌÀü Ŭ·¡½º
´ÙÀ½ Ŭ·¡½º
ÇÁ·¹ÀÓÀ¸·Î
ÇÁ·¹ÀÓ ¾øÀÌ
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå
»ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå