JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent.locks
Ŭ·¡½º ReentrantReadWriteLock.WriteLock

java.lang.Object 
  »óÀ§¸¦ È®Àå java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock
¸ðµç ±¸ÇöµÈ ÀÎÅÍÆäÀ̽º:
Serializable, Lock
Æ÷ÇԵǾî Àִ Ŭ·¡½º:
ReentrantReadWriteLock

public static class ReentrantReadWriteLock.WriteLock
extends Object
implements Lock, Serializable

ReentrantReadWriteLock.writeLock() ¸Þ¼­µå¿¡ ÀÇÇØ ¸®ÅÏµÈ ¶ô

°ü·Ã Ç׸ñ:
Á÷·ÄÈ­ µÈ Çü½Ä

»ý¼ºÀÚ °³¿ä
protected ReentrantReadWriteLock.WriteLock (ReentrantReadWriteLock  lock)
          ¼­ºê Ŭ·¡½º¿¡ ÀÇÇØ »ç¿ëµÇ´Â »ý¼ºÀÚ ÀÔ´Ï´Ù.
 
¸Þ¼­µå °³¿ä
 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
 

»ý¼ºÀÚ »ó¼¼

ReentrantReadWriteLock.WriteLock

protected ReentrantReadWriteLock.WriteLock(ReentrantReadWriteLock  lock)
¼­ºê Ŭ·¡½º¿¡ ÀÇÇØ »ç¿ëµÇ´Â »ý¼ºÀÚ ÀÔ´Ï´Ù.

ÆĶó¹ÌÅÍ:
lock - ¿ÜºÎÀÇ ¶ô °´Ã¼
¿¹¿Ü:
NullPointerException - ¶ôÀÌ nullÀÎ °æ¿ì
¸Þ¼­µåÀÇ »ó¼¼

lock

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

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

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

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

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

lockInterruptibly

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

read ¶ô ¶Ç´Â Ãâ·Â¶ôÀÇ ¸ðµÎ ´Ù¸¥ 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 °´Ã¼

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 µµ ÂüÁ¶ÇϽʽÿÀ.