|
|||||||||||
| 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.IllegalArgumentExceptionpublic final void awake()
notify() ¸Þ¼Òµå¸¦ È£ÃâÇÒ »ÓÀ̳ª
µ¿±âȵǾî ÀÖ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù)
public final void awakeAll()
wait / notify
ó·³ ÇöÀç »óÅÂ¿Í °ü°è¾øÀÌ Á¦¾îÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù.
ÀÌ ¸Þ¼Òµå¸¦ ÅëÇØ ±ú¾î³ª´Â ½º·¹µå´Â ÀÌ¹Ì ºí·ÏÅ· µÇ¾îÀÖ´ø
½º·¹µåµé·Î ÇÑÁ¤µÇ¸ç ÀÌ ¸Þ¼Òµå È£Ãâ ÈÄ¿¡µµ ¿©ÀüÈ÷
Á¶°Ç¿¡ µû¶ó ´Ù½Ã ºí·ÏÅ· µÉ ¼ö ÀÖ´Ù.
(³»ºÎÀûÀ¸·Î ´ÜÁö notifyAll() ¸Þ¼Òµå¸¦ È£ÃâÇÒ »ÓÀ̳ª
µ¿±âȵǾî ÀÖ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù)
public final boolean isSatisfied()
isSatisfied in interface Conditionpublic 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.IllegalArgumentExceptionpublic final int getID()
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||