|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.wegra.thread.Lock
org.wegra.thread.ConditionVariable
ÀÌ Å¬·¡½º´Â "Á¶°Ç º¯¼ö"¸¦ °£´ÜÇÏ°Ô ±¸ÇöÇØ ³õÀº Ŭ·¡½ºÀÌ´Ù. "Á¶°Ç º¯¼ö"´Â ¾î¶² Á¶°ÇÀÌ ¸¸Á·µÇ´Â °æ¿ì¿¡¸¸ ½º·¹µå°¡ ±â´Ù¸®µµ·Ï Çϱâ À§ÇÑ °ÍÀ¸·Î ¸¸¾à Á¶°ÇÀÌ ¸¸Á·µÇÁö ¾Ê¾Ò´Ù¸é ½º·¹µå´Â ºí·ÏÅ· µÇÁö ¾Ê´Â´Ù. "Á¶°Ç º¯¼ö"¸¦ »ç¿ëÇϸ鼴 ÁßøµÈ ¸ð´ÏÅÍ¿¡ ÀÇÇØ¼ ³ªÅ¸³¯ ¼ö ÀÖ´Â ±³Âø »óŸ¦ Á¶½ÉÇØ¾ß ÇÑ´Ù.
class Lockout { ConditionVariable fCondition = new ConditionVariable(false); synchronized void f() { // do work fCondition.waitFotTure(); } synchronized void set() { // f()¿¡¼ ´Ù¸¥ ½º·¹µå°¡ ºí·ÏÅ· µÇ¾îÀÖ´Â fCondition.setCondition(true); // ±³Âø »óŰ¡ ÀϾÙ. } }À§ÀÇ Äڵ忡¼´Â ¾î¶² ½º·¹µå°¡ ¤©()·Î ÁøÀÔÇØ¼ ¸ð´ÏÅ͸¦ ¾òÀº ´ÙÀ½ Á¶°Ç º¯¼ö°¡ ÂüÀÌ µÉ ¶§±îÁö ±â´Ù¸± ¼ö ÀÖ´Ù. ÀÌ ¶§ ¸ð´ÏÅÍÀÇ ¶ôÀ» ³õ´Â °ÍÀº ¾Æ´Ï¶ó´Â °Í¿¡ À¯ÀÇÇØ¾ß ÇÑ´Ù. (À§ÀÇ Äڵ忡¼
fCondition
ÀÌ ÂüÀÌ µÇ´Â °æ¿ì´Â
¿ÀÁ÷ set()
À» È£ÃâÇÏ´Â ¹æ¹ý ¹Û¿¡ ¾ø´Ù. ÇÏÁö¸¸
set()
À» È£ÃâÇßÀ» °æ¿ì ÀÌ¹Ì f()
¸¦ È£ÃâÇÑ
½º·¹µå¿¡¼ ¸ð´ÏÅ͸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î ºí·ÏÅ· µÇ°Ô µÈ´Ù.
°á·ÐÀûÀ¸·Î, À§ÀÇ Äڵ忡¼´Â ÁßøµÈ ¸ð´ÏÅÍ¿¡ ÀÇÇÑ ±³Âø »óŰ¡ ³ªÅ¸³¯ ¼ö ÀÖ´Ù)
À§ÀÇ ¹®Á¦¸¦ Ç®±â À§Çؼ´Â Á¶°Ç º¯¼ö°¡ ÂüÀÌ µÇ±æ ±â´Ù¸®´Â ÄÚµå ÀÌÀü¿¡ ¸ð´ÏÅ͸¦
³õ¾Æ ÁÖ¾î¾ß ÇÑ´Ù.
class Okay { ConditionVariable fCondition = new ConditionVariable(false); void f() { synchronized( this ) { // do work } fCondition.waitForTrue(); } synchronized void set() { fCondition.setCondition(true); } }¾Æ´Ï¸é
set()
¸Þ¼Òµå¸¦ Åë±âÈ ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.
class Okay { ConditionVariable fCondition = new ConditionVariable(false); synchronized void f() { // do work fCondition.waitForAll(); } void set() { fCondition.waitForTure(); } }ÀϹÝÀûÀÎ
wait()
, notify
¹æ½Ä¿¡¼´Â
wait()
°¡ ºí·ÏÅ· µÇÁö Àü¿¡ ¸ð´ÏÅ͸¦ ³õ¾ÆÁֱ⠶§¹®¿¡
ÀÌ¿Í °°Àº ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ÇÏÁö¸¸ ¸ðµç °æ¿ì ¾µ ¼ö ÀÖ´Â °Ç ¾Æ´Ï´Ù.
Constructor Summary | |
ConditionVariable()
Ãʱâ Á¶°ÇÀÌ °ÅÁþ »óÅÂÀÎ Á¶°Çº¯¼ö¸¦ »ý¼ºÇÑ´Ù. |
|
ConditionVariable(boolean condition)
ƯÁ¤ »óÅÂÀÇ Á¶°Ç º¯¼ö¸¦ »ý¼ºÇÑ´Ù. |
Method Summary | |
boolean |
acquire(long timeout)
Semaphore ±¸ÇöÀ» À§ÇÑ ¸Þ¼Òµå waitForTrue(long) ¿Í µ¿ÀÏ |
void |
awake()
ºí·ÏÅ· µÇ¾îÀÖ´Â ½º·¹µå Áß Çϳª¸¦ ±ú¿î´Ù. |
void |
awakeAll()
¸ðµç ºí·ÏÅ· ½º·¹µå¸¦ ±ú¿î´Ù. |
int |
getID()
ÇØ´ç ¼¼¸¶Æ÷¾î °´Ã¤ÀÇ °íÀ¯ ID¸¦ ¹Ýȯ |
boolean |
isSatisfied()
Á¶°Ç º¯¼ö°¡ ÂüÀÏ °æ¿ì¿¡ true¸¦ ¹ÝȯÇÑ´Ù. |
void |
release()
Semaphore ±¸ÇöÀ» À§ÇÑ Å¬·¡½º setCondition(boolean) ¿Í µ¿ÀÏ |
void |
setCondition(boolean condition)
Á¶°ÇÀ» ÁÖ¾îÁø »óÅ·ΠÀç¼³Á¤ÇÑ´Ù. |
boolean |
waitForTrue()
Á¶°ÇÀÌ ÂüÀ¸·Î µÉ ¶§±îÁö ´ë±âÇÑ´Ù(ÀáÀçÀûÀ¸·Î ¿µ¿øÈ÷ ±â´Ù¸± ¼öµµ ÀÖ´Ù). |
boolean |
waitForTrue(long timeout)
Á¶°ÇÀÌ ÂüÀÌ µÉ ¶§±îÁö ±â´Ù¸°´Ù. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ConditionVariable()
public ConditionVariable(boolean condition)
Method Detail |
public boolean acquire(long timeout) throws java.lang.InterruptedException, TimeoutException, java.lang.IllegalArgumentException
waitForTrue(long)
¿Í µ¿ÀÏ
TimeoutException
- ¼¼¸¶Æ÷¾î°¡ ¾ò¾îÁö±â Àü¿¡ ŸÀӾƿôÀÌ ´Ù Áö³ª°£ °æ¿ì.
java.lang.InterruptedException
- ´Ù¸¥ ½º·¹µå¿¡ ÀÇÇØ¼ ¶ôÀ» ¾ò´Â °ÍÀÌ
ÀÎÅÍ·´Æ® µÇ¾úÀ» °æ¿ì.
java.lang.IllegalArgumentException
public final void awake()
notify()
¸Þ¼Òµå¸¦ È£ÃâÇÒ »ÓÀ̳ª
µ¿±âȵǾî ÀÖ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù)
public final void awakeAll()
wait
/ notify
ó·³ ÇöÀç »óÅÂ¿Í °ü°è¾øÀÌ Á¦¾îÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù.
ÀÌ ¸Þ¼Òµå¸¦ ÅëÇØ ±ú¾î³ª´Â ½º·¹µå´Â ÀÌ¹Ì ºí·ÏÅ· µÇ¾îÀÖ´ø
½º·¹µåµé·Î ÇÑÁ¤µÇ¸ç ÀÌ ¸Þ¼Òµå È£Ãâ ÈÄ¿¡µµ ¿©ÀüÈ÷
Á¶°Ç¿¡ µû¶ó ´Ù½Ã ºí·ÏÅ· µÉ ¼ö ÀÖ´Ù.
(³»ºÎÀûÀ¸·Î ´ÜÁö notifyAll()
¸Þ¼Òµå¸¦ È£ÃâÇÒ »ÓÀ̳ª
µ¿±âȵǾî ÀÖ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù)
public final boolean isSatisfied()
isSatisfied
in interface Condition
public void release()
setCondition(boolean)
¿Í µ¿ÀÏ
public void setCondition(boolean condition)
public final boolean waitForTrue() throws java.lang.InterruptedException
waitForTure(Semaphore.TIMEOUT_FOREVER);
¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ¾ÆÁÖ Á¶±ÝÀ̳ª¸¶ ´õ È¿À²ÀûÀÌ´Ù.
java.lang.InterruptedException
public final boolean waitForTrue(long timeout) throws java.lang.InterruptedException, TimeoutException, java.lang.IllegalArgumentException
timeout
- ¹Ð¸®ÃÊ ´ÜÀ§, 0ÀÌ ÁÖ¾îÁö¸é °ð¹Ù·Î ¹ÝȯÇÑ´Ù.
java.lang.InterruptedException
TimeoutException
java.lang.IllegalArgumentException
public final int getID()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |