JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent.locks
Ŭ·¡½º ReentrantLock

java.lang.Object 
  »óÀ§¸¦ È®Àå java.util.concurrent.locks.ReentrantLock
¸ðµç ±¸ÇöµÈ ÀÎÅÍÆäÀ̽º:
Serializable, Lock

public class ReentrantLock
extends Object
implements Lock, Serializable

synchronized ¸Þ¼­µå ¹× ¹®ÀåÀ» »ç¿ëÇØ ¾×¼¼½º ÇÏ´Â ¾Ï¹¬ÀÇ °¨½Ã ¶ô°ú °°Àº ±âº» µ¿ÀÛ ¹× ½Ã¸àƽ½º¸¦ »ç¿ëÇØ, ÇÑÆí È®Àå ±â´ÉÀ» °¡Áö´Â ÀçÀÔ °¡´ÉÇÑ »óÈ£ ¹èŸ Lock ÀÔ´Ï´Ù.

ReentrantLock´Â ¸¶Áö¸·¿¡ ¶ô¿¡ ¼º°øÇßÁö¸¸ ¾ÆÁ÷ ¶ô ÇØÁ¦ÇÏ°í ÀÖÁö ¾Ê´Â thread¿¡ ÀÇÇØ ¡¸¼ÒÀ¯¡¹µË´Ï´Ù. ¶ôÀÌ ´Ù¸¥ thread¿¡ ¼ÒÀ¯µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì, lock¸¦ È£ÃâÇÏ´Â thread°¡ º¹±ÍÇØ ¶ôÀÇ Ãëµæ¿¡ ¼º°øÇÕ´Ï´Ù. ÇöÀçÀÇ thread°¡ ¶ôÀ» ÀÌ¹Ì ¼ÒÀ¯ÇÏ°í ÀÖ´Â °æ¿ì, ¸Þ¼­µå´Â Áï½Ã º¹±ÍÇÕ´Ï´Ù. ÀÌ°ÍÀº, isHeldByCurrentThread() ¹× getHoldCount() ¸Þ¼­µå¸¦ »ç¿ëÇØ Ã¼Å©ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ Å¬·¡½ºÀÇ »ý¼ºÀÚ´Â ¿É¼ÇÀÇ fairness ÆĶó¹ÌÅ͸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. ÀÌ°ÍÀÌ true·Î ¼³Á¤µÇ¸é, °æÇÕÀÌ Á¸ÀçÇÏ´Â °æ¿ì, ¶ôÀº °¡Àå ±æ°Ô ´ë±âÇÏ°í ÀÖ´Â thread¿¡ÀÇ ¾×¼¼½º¸¦ Çã°¡Çϵµ·Ï ÀÀ´äÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, ÀÌ ¶ôÀÌ Æ¯Á¤ÀÇ ¾×¼¼½º¼ø¼­¸¦ º¸ÁõÇÒ °ÍÀº ¾ø½À´Ï´Ù. ´Ù¼öÀÇ thread¿¡ ÀÇÇØ ¾×¼¼½º µÇ´Â ±Õµî ¶ôÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥Àº µðÆúÆ® ¼³Á¤À» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥º¸´Ù ³·Àº (º¸´Ù Àú¼ÓÀÎ, ¸¹Àº °æ¿ì ¸Å¿ì Àú¼ÓÀÎ) Àüü throughput¸¦ Ç¥½ÃÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù¸¸, ¶ôÀ» ÃëµæÇÒ ¶§ÀÇ º¯µ¿Àº º¸´Ù ÀÛ¾ÆÁ®, °í°¥ÇÏÁö ¾Ê´Â °ÍÀÌ º¸ÁõµË´Ï´Ù. ´Ù¸¸, ¶ôÀÇ ±Õµî¼º¿¡ÀÇÇØ thread ½ºÄÉÁÙ¸µÀÇ ±Õµî¼ºÀÌ º¸ÁõµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÀÌ ¶§¹®¿¡ ±Õµî ¶ôÀ» »ç¿ëÇÏ´Â ´Ù¼öÀÇ threadÀÇ 1°³°¡ ¿©·¯ Â÷·Ê ¿¬¼ÓÇØ ÃëµæÇØ, È°¼ºÈ­µÈ ´Ù¸¥ threadÀÇ ÁøôÀ» º¸Áö ¸øÇÏ°í, ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÁö ¾Ê´Â »óÅ°¡ µÉ ¼öµµ ÀÖ½À´Ï´Ù. ¶Ç, ½Ã°£ ÁöÁ¤ÀÌ ¾ø´Â tryLock ¸Þ¼­µå´Â ±Õµî ¼³Á¤À» Á¸ÁßÇÏÁö ¾Ê°í, ¹Þ¾ÆµéÀÌÁö ¾Ê½À´Ï´Ù. ´Ù¸¥ thread°¡ ´ë±â ±× Áß¿¡¼­ ¶ôÀÌ À¯È¿Çϸé ÀÌ ¸Þ¼­µå´Â ¼º°øÇÕ´Ï´Ù.

lock È£ÃâÀÇ Á÷ÈÄ¿¡ try ºí·ÏÀ» °è¼ÓÇÏ´Â °ÍÀÌ, Ç×»ó Ãßõ µÇ°í ÀÖ½À´Ï´Ù. º¸Åë, ´ÙÀ½ÀÇ ±¸ÃàÀ» ½ÇÇàÇϱâ Àü/ÈÄ¿¡ ½ÇÇàÇÕ´Ï´Ù.


 class X {
   private final ReentrantLock lock = new ReentrantLock();
   // ...

   public void m() { 
     lock.lock();  // block until condition holds
     try {
       // ... method body
     } finally {
       lock.unlock()
     }
   }
 }
 

ÀÌ Å¬·¡½º´Â Lock ÀÎÅÍÆäÀ̽ºÀÇ ±¸Çö¿¡ °¡¼¼ÇØisLocked, getLockQueueLength ¹× ÆľÇÀ̳ª °¨½Ã¿¡ µµ¿òÀÌ µÇ´Â °ü·Ã protected ¾×¼¼½º ¸Þ¼­µå¸¦ Á¤ÀÇÇÕ´Ï´Ù.

ÀÌ Å¬·¡½ºÀÇ Á÷·ÄÈ­´Â ºôÆ®ÀÎ ¶ô°ú °°°Ô µ¿ÀÛÇÕ´Ï´Ù. Á÷·ÄÈ­ ÇØÁ¦µÈ ¶ôÀº Á÷·ÄÈ­½Ã »óÅ¿¡ °ü°è¾øÀÌ, ¶ô ÇØÁ¦ »óÅ°¡ µË´Ï´Ù.

ÀÌ ¶ôÀº 1°³ÀÇ thread·Î ÃÖ´ë 2147483648 Àç±ÍÀû ¶ôÀ» Áö¿ø ÇÕ´Ï´Ù.

µµÀÔµÈ ¹öÀü :
1.5
°ü·Ã Ç׸ñ:
Á÷·ÄÈ­ µÈ Çü½Ä

»ý¼ºÀÚ °³¿ä
ReentrantLock ()
          ReentrantLock ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
ReentrantLock (boolean fair)
          ÁöÁ¤µÈ ±Õµî¼º Á¤Ã¥¸¦ »ç¿ëÇØ ReentrantLock ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
 
¸Þ¼­µå °³¿ä
 int getHoldCount ()
          ÇöÀçÀÇ threadÀÇ, ÀÌ ¶ô¿¡ ´ëÇÑ º¸°ü À¯Áö¼ö¸¦ Á¶È¸ÇÕ´Ï´Ù.
protected  Thread getOwner ()
          ÇöÀç ÀÌ ¶ôÀ» ¼ÒÀ¯ÇÏ°í ÀÖ´Â thread¸¦ ¸®ÅÏÇÕ´Ï´Ù.
protected  Collection <Thread > getQueuedThreads ()
          ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÇÏ°í ÀÖ´Â thread¸¦ Æ÷ÇÔÇÑ Ä÷º¼ÇÀ» ¸®ÅÏÇÕ´Ï´Ù.
 int getQueueLength ()
          ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀÇ threadÀÇ ÃßÁ¤¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
protected  Collection <Thread > getWaitingThreads (Condition  condition)
          ÀÌ ¶ô¿¡ °ü·ÃµÈ ÁöÁ¤ »óŸ¦ ´ë±âÁßÀÇ thread¸¦ Æ÷ÇÔÇÑ Ä÷º¼ÇÀ» ¸®ÅÏÇÕ´Ï´Ù.
 int getWaitQueueLength (Condition  condition)
          ÀÌ ¶ô¿¡ °ü·ÃµÈ ÁöÁ¤ »óÅ·Π´ë±âÁßÀÇ threadÀÇ ÃßÁ¤¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 boolean hasQueuedThread (Thread  thread)
          ÁöÁ¤µÈ thread°¡ ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀΰ¡ ¾î¶²°¡¸¦ Á¶È¸ÇÕ´Ï´Ù.
 boolean hasQueuedThreads ()
          ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀÇ thread°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Á¶È¸ÇÕ´Ï´Ù.
 boolean hasWaiters (Condition  condition)
          ÀÌ ¶ô¿¡ °ü·ÃµÈ ÁöÁ¤ »óÅ·Π´ë±âÇÏ°í ÀÖ´Â thread°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Á¶È¸ÇÕ´Ï´Ù.
 boolean isFair ()
          ÀÌ ¶ôÀ¸·Î ±Õµî¼ºÀÌ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 boolean isHeldByCurrentThread ()
          ÇöÀçÀÇ thread°¡ ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÀ»Áö ¾î¶³Áö¸¦ Á¶È¸ÇÕ´Ï´Ù.
 boolean isLocked ()
          ÀÌ ¶ôÀÌ ¸î°³ÀÇ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ°í ÀÖ´ÂÁö¸¦ Á¶È¸ÇÕ´Ï´Ù.
 void lock ()
          ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
 void lockInterruptibly ()
          ÇöÀçÀÇ thread°¡ interrupted °¡ ¾Æ´Ñ ÇÑ, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
 Condition newCondition ()
          ÀÌ Lock ÀνºÅϽº·Î »ç¿ëÇÏ´Â Condition ÀνºÅϽº¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 String toString ()
          ÀÌ ¶ôÀ» ½Äº°Çϴ ij¸¯ÅÍ ¶óÀÎ ¹× ¶ô »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù.
 boolean tryLock ()
          È£Ãâ½Ã¿¡ ´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡°Ô¸¸, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
 boolean tryLock (long timeout, TimeUnit  unit)
          ÁöÁ¤µÈ ´ë±â ½Ã°£³»¿¡ ´Ù¸¥ thread°¡ ¶ôÀ» º¸°ü À¯ÁöÇÏÁö ¾Ê°í, ÇöÀçÀÇ thread·ÎÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì¿¡ ¶ôÀ» ÃëµæÇÕ´Ï´Ù.
 void unlock ()
          ÀÌ ¶ôÀÇ ÇعæÀ» ½ÃµµÇÕ´Ï´Ù.
 
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

»ý¼ºÀÚ »ó¼¼

ReentrantLock

public ReentrantLock()
ReentrantLock ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ°ÍÀº, ReentrantLock(false) »ç¿ë°ú °°½À´Ï´Ù.


ReentrantLock

public ReentrantLock(boolean fair)
ÁöÁ¤µÈ ±Õµî¼º Á¤Ã¥¸¦ »ç¿ëÇØ ReentrantLock ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
fair - ÀÌ ¶ôÀÌ ±ÕµîÀÎ °æ¿ì´Â true, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false
¸Þ¼­µåÀÇ »ó¼¼

lock

public void lock()
¶ôÀ» ÃëµæÇÕ´Ï´Ù.

¶ôÀÌ ´Ù¸¥ thread¿¡ º¸°ü À¯ÁöµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì, ±× ¶ôÀ» ÃëµæÇØ Áï½Ã º¹±ÍÇØ, ¶ôÀÇ º¸°ü À¯Áö Ä«¿îÆ®¸¦ 1 À¸·Î ¼³Á¤ÇÕ´Ï´Ù.

ÇöÀçÀÇ thread°¡ ¶ôÀ» ÀÌ¹Ì º¸°ü À¯ÁöÇÏ°í ÀÖ´Â °æ¿ì, º¸°ü À¯Áö Ä«¿îÆ®ÀÇ °ªÀ» 1 ÁõºÐ ÇØ, ¸Þ¼­µå¸¦ Áï½Ã º¹±ÍÇÕ´Ï´Ù.

¶ôÀÌ ´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ°í ÀÖ´Â °æ¿ì, ÇöÀçÀÇ thread°¡ thread ½ºÄÉÁÙ¸µ¿¡ °üÇؼ­ ¹«È¿°¡ µÇ¾î, ¶ôÀÌ ÃëµæµÉ ¶§±îÁö ´ë±âÇÕ´Ï´Ù. ¶ôÀÌ ÃëµæµÇ¸é, ¶ô º¸°ü À¯Áö Ä«¿îÆ®°¡ 1 À¸·Î ¼³Á¤µË´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Lock ³»ÀÇ lock

lockInterruptibly

public void lockInterruptibly()
                       throws InterruptedException 
ÇöÀçÀÇ thread°¡ interrupted °¡ ¾Æ´Ñ ÇÑ, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.

¶ôÀÌ ´Ù¸¥ thread¿¡ º¸°ü À¯ÁöµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì, ±× ¶ôÀ» ÃëµæÇØ Áï½Ã º¹±ÍÇØ, ¶ôÀÇ º¸°ü À¯Áö Ä«¿îÆ®¸¦ 1 À¸·Î ¼³Á¤ÇÕ´Ï´Ù.

ÇöÀçÀÇ thread°¡ ¶ôÀ» ÀÌ¹Ì º¸°ü À¯ÁöÇÏ°í ÀÖ´Â °æ¿ì, º¸°ü À¯Áö Ä«¿îÆ®ÀÇ °ªÀ» 1 ÁõºÐ ÇØ, ¸Þ¼­µå¸¦ Áï½Ã º¹±ÍÇÕ´Ï´Ù.

¶ôÀÌ ´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ°í ÀÖ´Â °æ¿ì, ÇöÀçÀÇ thread´Â threadÀÇ ½ºÄÉÁÙ¸µ¿¡ °üÇؼ­ ¹«È¿°¡ µÇ¾î, ´ÙÀ½ÀÇ 2°³ Áß ÇÑÂÊÀÌ ÀϾ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.

¶ôÀÌ ÇöÀçÀÇ thread¿¡ ÀÇÇØ ÃëµæµÇ¾úÀ» °æ¿ì, ¶ô º¸°ü À¯Áö Ä«¿îÆ®°¡ 1 À¸·Î ¼³Á¤µË´Ï´Ù.

ÇöÀçÀÇ thread·Î

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

ÀÌ ¸Þ¼­µå´Â ¸í½ÃÀûÀÎ ³¢¾îµé¾î Æ÷ÀÎÆ®À̱⠶§¹®¿¡ ÀÌ ±¸Çö¿¡¼­´Â º¸Åë ¶Ç´Â ÀçÀÔ °¡´ÉÇÑ ¶ô Ãëµæ¿¡ÀÇ ÀÎÅÍ·´Æ®¿¡ÀÇ ÀÀ´ä¿¡ ³ôÀº ¿ì¼±µµ°¡ ÁÖ¾îÁý´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Lock ³»ÀÇ lockInterruptibly
¿¹¿Ü:
InterruptedException - ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
°ü·Ã Ç׸ñ:
Thread.interrupt()

tryLock

public boolean tryLock()
È£Ãâ½Ã¿¡ ´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡°Ô¸¸, ¶ôÀ» ÃëµæÇÕ´Ï´Ù.

´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡ ¶ôÀ» ÃëµæÇØ, °ª true·Î Áï½Ã º¹±ÍÇØ ¶ôÀÇ º¸°ü À¯Áö Ä«¿îÆ®¸¦ 1 À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¶ôÀÌ ±Õµî ¼ø¼­ºÎ Á¤Ã¥¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì¿¡¼­µµ, ¶ôÀÌ »ç¿ë °¡´ÉÇϸé, ´Ù¸¥ thread°¡ ÇöÀç ¶ôÀ» ´ë±âÇÏ°í ÀÖÀ»Áö ¾î¶³Áö¿¡ °ü°è¾øÀÌ, tryLock() È£Ãâ·Î °ð¹Ù·Î ¶ôÀÌ ÃëµæµË´Ï´Ù. ÀÌ ¡¸È­¹° ¿î¹Ý¼±¡¹µ¿ÀÛ¿¡ ÀÇÇØ ±Õµî¼ºÀÌ ¾ø¾îÁø´Ù°í´Â ¸»ÇÒ ¼ö ÀÖ¾î ÀÌ°ÍÀº ƯÁ¤ÀÇ »óȲÇÏ·Î À¯¿ëÇÕ´Ï´Ù. ÀÌ ¶ôÀÇ ±Õµî ¼³Á¤À» Á¸ÁßÇÏ´Â °æ¿ì´Â °ÅÀÇ µî°¡ÀÎ tryLock(0, TimeUnit.SECONDS)¸¦ »ç¿ëÇÕ´Ï´Ù (À̰͵µ ÀÎÅÍ·´Æ®¸¦ °ËÃâÇÑ´Ù).

ÇöÀçÀÇ thread°¡ ¶ôÀ» ÀÌ¹Ì º¸°ü À¯ÁöÇÏ°í ÀÖ´Â °æ¿ì, º¸°ü À¯Áö Ä«¿îÆ®ÀÇ °ªÀÌ 1 ÁõºÐ µÇ¾î ¸Þ¼­µå´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¶ôÀÌ ´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ°í ÀÖ´Â °æ¿ì, ÀÌ ¸Þ¼­µå´Â °ª false·Î Áï½Ã º¹±ÍÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Lock ³»ÀÇ tryLock
¹Ýȯ°ª:
¶ôÀÌ ÇÁ¸®·Î ÇöÀçÀÇ thread¿¡ ÀÇÇØ ÃëµæµÇ¾ú´ÂÁö, ¶ôÀÌ ÇöÀçÀÇ thread¿¡ ÀÇÇØ ÃëµæÀÌ ³¡³­ »óÅÂÀÎ °æ¿ì´Â true, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false

tryLock

public boolean tryLock(long timeout,
                       TimeUnit  unit)
                throws InterruptedException 
ÁöÁ¤µÈ ´ë±â ½Ã°£³»¿¡ ´Ù¸¥ thread°¡ ¶ôÀ» º¸°ü À¯ÁöÇÏÁö ¾Ê°í, ÇöÀçÀÇ thread·ÎÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì¿¡ ¶ôÀ» ÃëµæÇÕ´Ï´Ù.

´Ù¸¥ thread°¡ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì¿¡ ¶ôÀ» ÃëµæÇØ, °ª true·Î Áï½Ã º¹±ÍÇØ, ¶ô º¸°ü À¯Áö Ä«¿îÆ®¸¦ 1 À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¶ôÀÌ ±Õµî ¼ø¼­ºÎ Á¤Ã¥¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤µÇ¾î À־, ´Ù¸¥ thread°¡ ÇöÀç ¶ôÀ» ´ë±âÇÏ°í ÀÖ´Â °æ¿ì´Â »ç¿ë °¡´ÉÇÑ ¶ôÀº ÃëµæµÇÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº, tryLock() ¸Þ¼­µå¿Í´Â ´ëÁ¶ÀûÀÔ´Ï´Ù. ±Õµî ¶ô¿¡ ´ëÇÑ È­¹° ¿î¹Ý¼±À» Çã°¡ÇÏÁö ¾Ê´Â ½Ã°£ ¼³Á¤µÈ tryLock¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ½Ã°£ ¼³Á¤°ú ºñ½Ã°£ ¼³Á¤ÀÇ ¾çÇü½ÄÀ» Á¶ÇÕÇØ »ç¿ëÇÕ´Ï´Ù.

if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... }
 

ÇöÀçÀÇ thread°¡ ¶ôÀ» ÀÌ¹Ì º¸°ü À¯ÁöÇÏ°í ÀÖ´Â °æ¿ì, º¸°ü À¯Áö Ä«¿îÆ®ÀÇ °ªÀÌ 1 ÁõºÐ µÇ¾î ¸Þ¼­µå´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¶ôÀÌ ´Ù¸¥ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ°í ÀÖ´Â °æ¿ì, ÇöÀçÀÇ thread´Â threadÀÇ ½ºÄÉÁÙ¸µ¿¡ °üÇؼ­ ¹«È¿°¡ µÇ¾î, ´ÙÀ½ÀÇ 3 °³Áß ÇÑÂÊÀÌ ÀϾ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.

¶ôÀÌ ÃëµæµÇ¾úÀ» °æ¿ì, °ª true°¡ µ¹·ÁÁÖ°íÁ® ¶ô º¸°ü À¯Áö Ä«¿îÆ®°¡ 1 À¸·Î ¼³Á¤µË´Ï´Ù.

ÇöÀçÀÇ thread·Î

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

ÁöÁ¤µÈ ´ë±â ½Ã°£ÀÌ °æ°úÇϸé, °ª false°¡ ¸®Åϵ˴ϴ٠. ½Ã°£ÀÌ Á¦·Î ¶Ç´Â ±×°Íº¸´Ù ÀÛÀº °æ¿ì, ¸Þ¼­µå´Â ´ë±âÇÏÁö ¾Ê½À´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ¸í½ÃÀûÀÎ ³¢¾îµé¾î Æ÷ÀÎÆ®À̱⠶§¹®¿¡ ÀÌ ±¸Çö¿¡¼­´Â º¸Åë ¶Ç´Â ÀçÀÔ °¡´ÉÇÑ ¶ô Ãëµæ ¹× ´ë±â ½Ã°£ °æ°ú ¸®Æ÷Æ®¿¡ÀÇ ÀÎÅÍ·´Æ®¿¡ ´ëÇÑ ÀÀ´ä¿¡ ³ôÀº ¿ì¼±µµ°¡ ÁÖ¾îÁý´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Lock ³»ÀÇ tryLock
ÆĶó¹ÌÅÍ:
timeout - ¶ôÀ» ´ë±âÇÏ´Â ½Ã°£
unit - timeout ÀμöÀÇ ½Ã°£ ´ÜÀ§
¹Ýȯ°ª:
¶ôÀÌ ÇÁ¸®·Î ÇöÀçÀÇ thread¿¡ ÀÇÇØ ¼ÒµæµÇ¾ú´ÂÁö, ¶ôÀÌ ÇöÀçÀÇ thread¿¡ ÀÇÇØ ÃëµæÀÌ ³¡³­ »óÅÂÀÎ °æ¿ì´Â true, ¶ôÀ» ÃëµæÇϱâ Àü¿¡ ´ë±â ½Ã°£ÀÌ °æ°úÇßÀ» °æ¿ì´Â false
¿¹¿Ü:
InterruptedException - ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
NullPointerException - ´ÜÀ§°¡ nullÀÎ °æ¿ì
°ü·Ã Ç׸ñ:
Thread.interrupt()

unlock

public void unlock()
ÀÌ ¶ôÀÇ ÇعæÀ» ½ÃµµÇÕ´Ï´Ù.

ÇöÀçÀÇ thread°¡ ÀÌ ¶ôÀÇ È¦´õÀÎ °æ¿ì, º¸°ü À¯Áö Ä«¿îÆ®ÀÇ °ªÀÌ ÁÙ¿©Áý´Ï´Ù. º¸°ü À¯Áö Ä«¿îÆ®°¡ Á¦·Î°¡ µÇ¸é, ¶ôÀÌ ÇعæµË´Ï´Ù. ÇöÀçÀÇ thread°¡ ÀÌ ¶ôÀÇ È¦´õ°¡ ¾Æ´Ñ °æ¿ì, IllegalMonitorStateExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Lock ³»ÀÇ unlock
¿¹¿Ü:
IllegalMonitorStateException - ÇöÀçÀÇ thread°¡ ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏÁö ¾Ê´Â °æ¿ì

newCondition

public Condition  newCondition()
ÀÌ Lock ÀνºÅϽº·Î »ç¿ëÇÏ´Â Condition ÀνºÅϽº¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¸®ÅÏµÈ Condition ÀνºÅϽº´Â Object °¨½Ã ¸Þ¼­µå (wait, notify ¹× notifyAll )¸¦ ºôÆ®ÀÎ °¨½Ã ¶ôÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì¿Í °°Àº »ç¿ë ¹æ¹ýÀ» Áö¿ø ÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Lock ³»ÀÇ newCondition
¹Ýȯ°ª:
Condition °´Ã¼

getHoldCount

public int getHoldCount()
ÇöÀçÀÇ threadÀÇ, ÀÌ ¶ô¿¡ ´ëÇÑ º¸°ü À¯Áö¼ö¸¦ Á¶È¸ÇÕ´Ï´Ù.

thread¿¡´Â ¶ô ÇØÁ¦ ¾×¼Ç°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â ¶ô ¾×¼Ç ¸¶´Ù, ¶ô º¸°ü À¯Áö°¡ Á¸ÀçÇÕ´Ï´Ù.

º¸Åë, º¸°ü À¯Áö Ä«¿îÆ® Á¤º¸´Â Å×½ºÆ® ¹× µð¹ö±×¿ëÀ¸·Î¸¸ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î ¶ôÀ» º¸°ü À¯ÁöÇÑ »óÅ·ΠƯÁ¤ÀÇ ÄÚµå ¼½¼Ç¿¡ µé¾î°¡¼­´Â ¾È µÇ´Â °æ¿ì, ±×°ÍÀ» ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³À´Ï´Ù.


 class X {
   ReentrantLock lock = new ReentrantLock();
   // ...     
   public void m() { 
     assert lock.getHoldCount() == 0;
     lock.lock();
     try {
       // ... method body
     } finally {
       lock.unlock();
     }
   }
 }
 

¹Ýȯ°ª:
ÇöÀçÀÇ threadÀÇ, ÀÌ ¶ô¿¡ ´ëÇÑ º¸°ü À¯Áö¼ö. ÇöÀçÀÇ thread°¡ ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì´Â Á¦·Î

isHeldByCurrentThread

public boolean isHeldByCurrentThread()
ÇöÀçÀÇ thread°¡ ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÀ»Áö ¾î¶³Áö¸¦ Á¶È¸ÇÕ´Ï´Ù.

ºôÆ®ÀÎ °¨½Ã ¶ô¿ëÀÇ Thread.holdsLock(java.lang.Object) ¸Þ¼­µå¿Í °°ÀÌ, ÀÌ ¸Þ¼­µå´Â º¸Åë, µð¹ö±× ¹× Å×½ºÆ®¿¡ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î ¶ôÀÌ º¸°ü À¯ÁöµÇ°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ´Â ¸Þ¼­µå´Â ±×°ÍÀ» ´ÙÀ½°ú °°ÀÌ °¡¸®Å³ ¼ö°¡ ÀÖ½À´Ï´Ù.


 class X {
   ReentrantLock lock = new ReentrantLock();
   // ...

   public void m() { 
       assert lock.isHeldByCurrentThread();
       // ... method body
   }
 }
 

ÀçÀÔ °¡´ÉÇÑ ¶ôÀÌ ÀçÀÔ ºÒ°¡´ÉÇÑ ¹æ¹ýÀ¸·Î È®½ÇÈ÷ »ç¿ëµÇµµ·Ï ÇÏ´Â °æ¿ì¿¡µµ, ÀÌ°ÍÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.


 class X {
   ReentrantLock lock = new ReentrantLock();
   // ...

   public void m() { 
       assert ! lock.isHeldByCurrentThread();
       lock.lock();
       try {
           // ... method body
       } finally {
           lock.unlock();
       }
   }
 }
 

¹Ýȯ°ª:
ÇöÀçÀÇ thread°¡ ¶ôÀ» º¸°ü À¯ÁöÇÏ´Â °æ¿ì´Â true, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false

isLocked

public boolean isLocked()
ÀÌ ¶ôÀÌ ¸î°³ÀÇ thread¿¡ ÀÇÇØ º¸°ü À¯ÁöµÇ°í ÀÖ´ÂÁö¸¦ Á¶È¸ÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â µ¿±â¸¦ Á¦¾îÇÏ´Â ¸ñÀûÀº ¾Æ´Ï°í, ½Ã½ºÅÛ »óŸ¦ °¨½ÃÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
¸î°³ÀÇ thread°¡ ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖ´Â °æ¿ì´Â true, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false

isFair

public final boolean isFair()
ÀÌ ¶ôÀ¸·Î ±Õµî¼ºÀÌ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÀÌ ¶ôÀ¸·Î ±Õµî¼ºÀÌ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â true

getOwner

protected Thread  getOwner()
ÇöÀç ÀÌ ¶ôÀ» ¼ÒÀ¯ÇÏ°í ÀÖ´Â thread¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¶ôÀÌ ¼ÒÀ¯µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â nullÀ» ¸®ÅÏÇÕ´Ï´Ù. ¶ôÀÇ ÃëµæÀ» ½ÃµµÇÏ°í ÀÖ¾î ¾ÆÁ÷ ÃëµæÇÏ°í ÀÖÁö ¾Ê´Â thread°¡ Á¸ÀçÇÏ´Â °æ¿ìµµ, ¼ÒÀ¯ÀÚ´Â ÀϽÃÀûÀ¸·Î null°¡ µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â º¸´Ù Æ÷°ýÀûÀÎ ¶ô °¨½Ã ±â´ÉÀ» Á¦°øÇÏ´Â ¼­ºê Ŭ·¡½ºÀÇ ±¸ÃàÀ» ¿ëÀÌÇÏ°Ô ÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
¼ÒÀ¯ÀÚ. ¼ÒÀ¯µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â null

hasQueuedThreads

public final boolean hasQueuedThreads()
ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀÇ thread°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Á¶È¸ÇÕ´Ï´Ù. Ãë¼Ò´Â ¾ðÁ¦¶óµµ ¹ß»ýÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ true°¡ µ¹·ÁÁÖ°íÁ®µµ, ´Ù¸¥ ¸î°³ÀÇ thread°¡ ÀÌ ¶ôÀ» ¾ò´Â °ÍÀº º¸ÁõµÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÁÖ·Î ½Ã½ºÅÛ »óÅÂÀÇ °¨½Ã¿¡ »ç¿ëÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀÇ ´Ù¸¥ thread°¡ Á¸ÀçÇÒ °¡´É¼ºÀÌ ÀÖ´Â °æ¿ì´Â true

hasQueuedThread

public final boolean hasQueuedThread(Thread  thread)
ÁöÁ¤µÈ thread°¡ ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀΰ¡ ¾î¶²°¡¸¦ Á¶È¸ÇÕ´Ï´Ù. Ãë¼Ò´Â ¾ðÁ¦¶óµµ ¹ß»ýÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ true°¡ µ¹·ÁÁÖ°íÁ®µµ, ÀÌ thread°¡ ÀÌ ¶ôÀ» ¾ò´Â °ÍÀº º¸ÁõµÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÁÖ·Î ½Ã½ºÅÛ »óÅÂÀÇ °¨½Ã¿¡ »ç¿ëÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
thread - thread
¹Ýȯ°ª:
ÁöÁ¤µÈ thread°¡ Å¥¿¡ ³Ö¾îÁö°í ÀÖ¾î ÀÌ ¶ôÀ» ´ë±âÁßÀÎ °æ¿ì´Â true
¿¹¿Ü:
NullPointerException - thread°¡ nullÀÎ °æ¿ì

getQueueLength

public final int getQueueLength()
ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÁßÀÇ threadÀÇ ÃßÁ¤¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå°¡ ³»ºÎÀÇ µ¥ÀÌÅÍ ±¸Á¶¸¦ traversal ÇÏ°í ÀÖ´Â µ¿¾È¿¡µµ, thread¼ö°¡ µ¿ÀûÀ¸·Î º¯È­ÇÏ´Â °æ¿ì°¡ Àֱ⠶§¹®¿¡ ÀÌ °ªÀº ÃßÁ¤¿¡ Áö³ªÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â µ¿±âÀÇ Á¦¾î¿ëÀº ¾Æ´Ï°í, ½Ã½ºÅÛ »óŸ¦ °¨½ÃÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
ÀÌ ¶ôÀ» ´ë±âÇÏ°í ÀÖ´Â threadÀÇ ÃßÁ¤¼ö

getQueuedThreads

protected Collection <Thread > getQueuedThreads()
ÀÌ ¶ôÀÇ ÃëµæÀ» ´ë±âÇÏ°í ÀÖ´Â thread¸¦ Æ÷ÇÔÇÑ Ä÷º¼ÇÀ» ¸®ÅÏÇÕ´Ï´Ù. ½ÇÁ¦ÀÇ thread ¼¼Æ®´Â °á°úÀÇ ±¸ÃàÁß¿¡µµ µ¿ÀûÀ¸·Î º¯È­ÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ ¸®ÅÏµÈ Ä÷º¼ÇÀº ÃÖ¼±ÀÌ ³ë·ÂÇÑ ´ÙÀ½ÀÇ ÃßÁ¤¿¡ Áö³ªÁö ¾Ê½À´Ï´Ù. ¸®ÅÏµÈ Ä÷º¼ÇÀÇ ¿ä¼Ò¿¡´Â ƯÁ¤ÀÇ ¼ø¼­´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â º¸´Ù Æ÷°ýÀûÀÎ °¨½Ã ±â´ÉÀ» Á¦°øÇÏ´Â ¼­ºê Ŭ·¡½ºÀÇ ±¸ÃàÀ» ¿ëÀÌÇÏ°Ô ÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
threadÀÇ Ä÷º¼Ç

hasWaiters

public boolean hasWaiters(Condition  condition)
ÀÌ ¶ô¿¡ °ü·ÃµÈ ÁöÁ¤ »óÅ·Π´ë±âÇÏ°í ÀÖ´Â thread°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Á¶È¸ÇÕ´Ï´Ù. ŸÀÓ ¾Æ¿ô ¹× ÀÎÅÍ·´Æ®´Â ¾ðÁ¦¶óµµ ¹ß»ýÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ true°¡ µ¹·ÁÁÖ°íÁ®µµ, Àå·¡ signal°¡ thread¸¦ ½ÃÀÛ½ÃÅ°´Â °ÍÀº º¸ÁõµÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÁÖ·Î ½Ã½ºÅÛ »óÅÂÀÇ °¨½Ã¿¡ »ç¿ëÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
condition - »óÅÂ
¹Ýȯ°ª:
´ë±âÁßÀÇ thread°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â true
¿¹¿Ü:
IllegalMonitorStateException - ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì
IllegalArgumentException - ÁöÁ¤µÈ »óÅ°¡ ÀÌ ¶ô°ú °ü·ÃÁöÀ» ¼ö ÀÖÁö ¾ÊÀº °æ¿ì
NullPointerException - »óÅ°¡ nullÀÎ °æ¿ì

getWaitQueueLength

public int getWaitQueueLength(Condition  condition)
ÀÌ ¶ô¿¡ °ü·ÃµÈ ÁöÁ¤ »óÅ·Π´ë±âÁßÀÇ threadÀÇ ÃßÁ¤¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. ŸÀÓ ¾Æ¿ô ¹× ÀÎÅÍ·´Æ®ÀÇ ¹ß»ýÇÒ °¡´É¼ºÀº ¾ðÁ¦¶óµµ Á¸ÀçÇϱâ À§ÇØ, ÃßÁ¤¼ö´Â ½ÇÁ¦ÀÇ ´ë±âÀÚ¼ö¿¡ °üÇÑ »óÇÑÀ» ³ªÅ¸³»´Â¿¡ Áö³ªÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â µ¿±âÀÇ Á¦¾î¿ëÀ¸·Î¼­°¡ ¾Æ´Ï°í, ½Ã½ºÅÛ »óÅÂÀÇ °¨½Ã¿ëÀ¸·Î¼­ ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
condition - »óÅÂ
¹Ýȯ°ª:
´ë±âÁßÀÇ threadÀÇ ÃßÁ¤¼ö
¿¹¿Ü:
IllegalMonitorStateException - ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì
IllegalArgumentException - ÁöÁ¤µÈ »óÅ°¡ ÀÌ ¶ô°ú °ü·ÃÁöÀ» ¼ö ÀÖÁö ¾ÊÀº °æ¿ì
NullPointerException - »óÅ°¡ nullÀÎ °æ¿ì

getWaitingThreads

protected Collection <Thread > getWaitingThreads(Condition  condition)
ÀÌ ¶ô¿¡ °ü·ÃµÈ ÁöÁ¤ »óŸ¦ ´ë±âÁßÀÇ thread¸¦ Æ÷ÇÔÇÑ Ä÷º¼ÇÀ» ¸®ÅÏÇÕ´Ï´Ù. ½ÇÁ¦ÀÇ thread ¼¼Æ®´Â °á°úÀÇ ±¸ÃàÁß¿¡µµ µ¿ÀûÀ¸·Î º¯È­ÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ ¸®ÅÏµÈ °á°ú´Â ÃÖ¼±ÀÌ ³ë·ÂÇÑ ´ÙÀ½ÀÇ ÃßÁ¤¿¡ Áö³ªÁö ¾Ê½À´Ï´Ù. ¸®ÅÏµÈ Ä÷º¼ÇÀÇ ¿ä¼Ò¿¡´Â ƯÁ¤ÀÇ ¼ø¼­´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â º¸´Ù Æ÷°ýÀûÀÎ »óÅ °¨½Ã ±â´ÉÀ» Á¦°øÇÏ´Â ¼­ºê Ŭ·¡½ºÀÇ ±¸ÃàÀ» ¿ëÀÌÇÏ°Ô ÇÏ´Â ¸ñÀûÀ¸·Î ¼³°èµÇ°í ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
condition - »óÅÂ
¹Ýȯ°ª:
threadÀÇ Ä÷º¼Ç
¿¹¿Ü:
IllegalMonitorStateException - ÀÌ ¶ôÀ» º¸°ü À¯ÁöÇÏ°í ÀÖÁö ¾Ê´Â °æ¿ì
IllegalArgumentException - ÁöÁ¤µÈ »óÅ°¡ ÀÌ ¶ô°ú °ü·ÃÁöÀ» ¼ö ÀÖÁö ¾ÊÀº °æ¿ì
NullPointerException - »óÅ°¡ nullÀÎ °æ¿ì

toString

public String  toString()
ÀÌ ¶ôÀ» ½Äº°Çϴ ij¸¯ÅÍ ¶óÀÎ ¹× ¶ô »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù. »óÅ´ °ýÈ£·Î µÑ·¯½Î¿© ij¸¯ÅÍ ¶óÀÎ ¡¸Unlocked¡¹¶Ç´Â ij¸¯ÅÍ ¶óÀÎ ¡¸Locked by¡¹¿¡ À̾î, ¼ÒÀ¯ÇÏ´Â threadÀÇ Thread.getName() °¡ Æ÷ÇԵ˴ϴÙ.

¿À¹ö¶óÀ̵å(override):
Ŭ·¡½º Object ³»ÀÇ toString
¹Ýȯ°ª:
ÀÌ ¶ô ¹× ±× »óŸ¦ ½Äº°Çϴ ij¸¯ÅÍ ¶óÀÎ

JavaTM 2 Platform
Standard Ed. 5.0

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