|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
java.lang.Object
public class Object
Object
Ŭ·¡½º´Â Ŭ·¡½º °èÃþ ·çÆ®ÀÔ´Ï´Ù. ¸ðµç Ŭ·¡½º´Â ½´ÆÛ Ŭ·¡½º·Î¼ Object
¸¦ °¡Áý´Ï´Ù. ¹è¿À» Æ÷ÇÔÇÑ ¸ðµç °´Ã¼´Â ÀÌ Å¬·¡½ºÀÇ ¸Þ¼µå¸¦ ±¸ÇöÇÕ´Ï´Ù.
Class
»ý¼ºÀÚ °³¿ä | |
---|---|
Object ()
|
¸Þ¼µå °³¿ä | |
---|---|
protected Object |
clone ()
ÀÌ °´Ã¼ÀÇ º¹»çº»À» ÀÛ¼ºÇØ ¸®ÅÏÇÕ´Ï´Ù. |
boolean |
equals (Object obj)
ÀÌ °´Ã¼¿Í ´Ù¸¥ °´Ã¼°¡ µ¿ÀÏÇÑÁö ¾î¶²Áö¸¦ ³ªÅ¸³À´Ï´Ù. |
protected void |
finalize ()
ÀÌ °´Ã¼¿¡ÀÇ ÂüÁ¶´Â ÀÌÁ¦ ¾øÀ¸¸é °¡ºñÁö Ä÷º¼Ç¿¡ ÀÇÇØ ÆÇ´ÜµÇ¾úÀ» ¶§¿¡ °¡ºñÁö Ä÷ºÅÍ¿¡ ÀÇÇØ È£ÃâÇÕ´Ï´Ù. |
Class <? extends Object > |
getClass ()
°´Ã¼ÀÇ ½ÇÇà½Ã Ŭ·¡½º¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
int |
hashCode ()
°´Ã¼ÀÇ ÇØ½Ã Äڵ尪À» ¸®ÅÏÇÕ´Ï´Ù. |
void |
notify ()
ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅÍ·Î ´ë±âÁßÀÇ thread¸¦ 1°³ Àç°³ÇÕ´Ï´Ù. |
void |
notifyAll ()
ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅÍ·Î ´ë±âÁßÀÇ ¸ðµç thread¸¦ Àç°³ÇÕ´Ï´Ù. |
String |
toString ()
°´Ã¼ÀÇ Ä³¸¯ÅÍ ¶óÀΠǥÇöÀ» ¸®ÅÏÇÕ´Ï´Ù. |
void |
wait ()
´Ù¸¥ thread°¡ ÀÌ °´Ã¼ÀÇ notify() ¸Þ¼µå ¶Ç´Â notifyAll() ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§±îÁö, ÇöÀçÀÇ thread¸¦ ´ë±â½Ãŵ´Ï´Ù. |
void |
wait (long timeout)
´Ù¸¥ thread°¡ ÀÌ °´Ã¼ÀÇ notify() ¸Þ¼µå ¶Ç´Â notifyAll() ¸Þ¼µå¸¦ È£ÃâÇÏ´ÂÁö, ÁöÁ¤µÈ ½Ã°£ÀÌ °æ°úÇÒ ¶§±îÁö, ÇöÀçÀÇ thread¸¦ ´ë±â½Ãŵ´Ï´Ù. |
void |
wait (long timeout,
int nanos)
´Ù¸¥ thread°¡ ÀÌ °´Ã¼ÀÇ notify() ¸Þ¼µå ¶Ç´Â notifyAll() ¸Þ¼µå¸¦ È£ÃâÇÏ´ÂÁö, ´Ù¸¥ thread°¡ ÇöÀçÀÇ thread¿¡ ÀÎÅÍ·´Æ®¸¦ °É°Å³ª ÁöÁ¤µÈ ¾çÀÇ ½Ç½Ã°£ÀÌ °æ°úÇÒ ¶§±îÁö, ÇöÀçÀÇ thread¸¦ ´ë±â½Ãŵ´Ï´Ù. |
»ý¼ºÀÚ »ó¼¼ |
---|
public Object()
¸Þ¼µåÀÇ »ó¼¼ |
---|
public final Class <? extends Object > getClass()
java.lang.Class
°´Ã¼. °á°ú´Â Class<? extends X>
ÇüÀÌ µÈ´Ù. ¿©±â¼, X´Â getClass
°¡ È£ÃâµÇ´Â static ÇüÀÇ ÀÌ·¹ÀÌÀðpublic int hashCode()
java.util.Hashtable
¿¡ ÀÇÇØ Á¦°øµÇ´Â °Í °°Àº ÇØ½Ã Å×À̺í·Î »ç¿ëÇϱâ À§Çؼ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
hashCode
¸Þ¼µåÀÇ ÀϹÝÀûÀÎ ±ÔÄ¢À» ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù.
hashCode
¸Þ¼µå¸¦ È£ÃâÇØµµ °á°ú´Â °°Àº Á¤¼ö°ªÀÌ µÇ¾î¾ß ÇÏ´Ùequals(java.lang.Object)
¸Þ¼µå·Î 2°³ÀÇ °´Ã¼°¡ µî°¡°¡ ¾Æ´Ï´Ù°í ¿©°ÜÁ³À» °æ¿ì´Â ÀÌ·¯ÇÑ °´Ã¼¿¡ ´ëÇØ¼ hashCode ¸Þ¼µå¸¦ È£ÃâÇßÀ» ¶§¿¡
°á°ú°¡ ´Ù¸¥ Á¤¼ö°ªÀÌ µÇÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù. ±×·¯³ª, µ¿ÀÏÇÏÁö ¾ÊÀº °´Ã¼¿¡ ´ëÇØ¼´Â ´Ù¸¥ Á¤¼ö°ªÀÌ »ý¼ºµÇµµ·Ï Çϸé, ÇØ½Ã Å×À̺íÀÇ ÆÛÆ÷¸Õ½º¸¦ ¿Ã¸± ¼ö°¡ ÀÖ´Ù
ÇÒ ¼ö ÀÖ´Â ÇÑ, Object Ŭ·¡½º¿¡¼ Á¤ÀǵǴ hashCode ¸Þ¼µå´Â ´Ù¸¥ °´Ã¼¿¡ ´ëÇØ¼´Â ´Ù¸¥ Á¤¼ö°ªÀ» ¸®ÅÏÇÕ´Ï´Ù. º¸Åë, À̰ÍÀº °´Ã¼ÀÇ ³»ºÎ ÁÖ¼Ò¸¦ Á¤¼ö°ª ·Î º¯È¯ÇÏ´Â ÇüÅ·Π±¸ÇöµË´Ï´Ù¸¸, ±×·¯ÇÑ ±¸Çö Å×Å©´ÐÀº JavaTM ÇÁ·Î±×·¥ ¾ð¾î¿¡¼´Â ºÒÇÊ¿äÇÕ´Ï´Ù.
equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
equals
¸Þ¼µå´Â null ÀÌ¿ÜÀÇ °´Ã¼ ÂüÁ¶¿¡¼ÀÇ µ¿Ä¡ °ü°è¸¦ ±¸ÇöÇÕ´Ï´Ù.
x
¿¡ ´ëÇØ, x.equals(x)
´Â true
¸¦ µ¹·ÁÁØ´Ùx
¿Í
y
¿¡ ´ëÇØ, x.equals(y)
´Â
y.equals(x)
°¡ true
¸¦ µ¹·ÁÁÖ´Â °æ¿ì¸¸ true
¸¦ µ¹·ÁÁØ´Ùx
, y
, z
¿¡ ´ëÇØ, x.equals(y)
°¡ true
¸¦ µ¹·ÁÁÖ°í, ÇÑÆí y.equals(z)
°¡ true
¸¦ µ¹·ÁÁÖ´Â °æ¿ì¿¡
x.equals(z)
´Â true
¸¦ µ¹·ÁÁØ´Ùx
¹× y
¿¡ ´ëÇØ, x.equals(y)¸¦ º¹¼ö È£ÃâÇϸé Ç×»ó true
¸¦ µ¹·ÁÁÖ´ÂÁö, Ç×»ó false
¸¦ µ¹·ÁÁØ´Ù. À̰ÍÀº °´Ã¼¿¡ ´ëÇÑ equals
¿¡
ÇÑ ºñ±³·Î »ç¿ëµÈ Á¤º¸°¡ º¯°æµÇ¾î ÀÖÁö ¾ÊÀº °ÍÀÌ Á¶°ÇÀÌ´Ùx
¿¡ ´ëÇØ, x.equals(null)
´Â false
¸¦ µ¹·ÁÁØ´Ù
Object
Ŭ·¡½ºÀÇ equals ¸Þ¼µå´Â °¡Àå ºñ±³Çϱ⠽¬¿î °´Ã¼ÀÇ µ¿Ä¡ °ü°è¸¦ ±¸ÇöÇÕ´Ï´Ù. Áï, null ÀÌ¿ÜÀÇ ÂüÁ¶Ä¡ x
¿Í
y
¿¡ ´ëÇØ, ÀÌ ¸Þ¼µå´Â x
¿Í
y
°¡ °°Àº °´Ã¼¸¦ ÂüÁ¶ÇÏ´Â (x == y
°¡ true
) °æ¿ì¿¡¸¸ true
¸¦ ¸®ÅÏÇÕ´Ï´Ù.
º¸Åë, ÀÌ ¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â °æ¿ì´Â hashCode ¸Þ¼µå¸¦ Ç×»ó ¿À¹ö¶óÀ̵å(override) ÇØ, ¡¸µî°¡ÀÎ °´Ã¼´Â µî°¡ÀÎ ÇØ½Ã Äڵ带 º¸°ü À¯ÁöÇÒ Çʿ䰡 ÀÖ´Ù¡¹¶ó°í ÇÏ´Â hashCode ¸Þ¼µåÀÇ ¹ü¿ë ±Ô¾à¿¡ µû¸¦ Çʿ䰡 ÀÖ´Â °Í¿¡ À¯ÀÇÇØ ÁÖ¼¼¿ä.
obj
- ºñ±³ ´ë»óÀÇ ÂüÁ¶ °´Ã¼
true
, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false
hashCode()
,
Hashtable
protected Object clone() throws CloneNotSupportedException
ÇÏÁö¸¸ true À̸ç, ´ÙÀ½ÀÇ ½Äx.clone() ! = x
µµ true ÀÎ °ÍÀÔ´Ï´Ù¸¸, À̰͵鵵 Àý´ëÀûÀÎ ¿ä°ÇÀÌ ¾Æ´Õ´Ï´Ù. ¶Ç ´ÙÀ½ÀÇ ½Äx.clone(). getClass() == x.getClass()
µµ º¸Åë true°¡ µË´Ï´Ù¸¸, À̰͵µ Àý´ëÀûÀÎ ¿ä°ÇÀÌ ¾Æ´Õ´Ï´Ù.x.clone(). equals(x)
º¸Åë, super.clone¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î ¸®ÅÏµÈ °´Ã¼¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ·¡½º ¹× ±× ½´ÆÛ Ŭ·¡½º ¸ðµç °Í (Object¸¦ Á¦¿ÜÇÑ´Ù)ÀÌ ÀÌ ±ÔÄ¢¿¡ µû¸£´Â °æ¿ì, x.clone(). getClass() == x.getClass()°¡ ¼º¸³ÇÕ´Ï´Ù.
º¸Åë, ÀÌ ¸Þ¼µå¿¡ ÀÇÇØ ¸®ÅÏµÈ °´Ã¼´Â ÀÌ °´Ã¼ (º¹Á¦µÇ°í ÀÖ´Ù)·ÎºÎÅÍ µ¶¸³Çϰí ÀÖÀ» Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ µ¶¸³¼ºÀ» ´Þ¼ºÇϱâ À§ÇØ, super.clone°¡ µ¹·ÁÁÖ´Â °´Ã¼ÀÇ Çʵ带 1°³ ÀÌ»ó (°´Ã¼°¡ µ¹·ÁÁÖ±â Àü¿¡) º¯°æÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ°Ô µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº º¸Åë, º¹Á¦ÇÏ´Â °´Ã¼ÀÇ ³»ºÎ ¡¸½ÉÃþ ±¸Á¶¡¹¸¦ ±¸¼ºÇÏ´Â °¡º¯ °´Ã¼ÀÇ Ä«ÇÇ ¹× ÀÌ·¯ÇÑ °´Ã¼¿¡ÀÇ ÂüÁ¶¸¦ Ä«ÇÇ¿¡ÀÇ ÂüÁ¶¿¡ ¿Å°Ü³õ´Â °ÍÀ»ÀǹÌÇÕ´Ï´Ù. Ŭ·¡½º¿¡ ¿ø½ÃÀû ÇÊµå ¶Ç´Â ºÒº¯ °´Ã¼¿¡ÀÇ ÂüÁ¶¸¸ÀÌ Æ÷ÇԵǴ °æ¿ì, º¸Åë, super.clone¿¡ ÀÇÇØ ¸®ÅÏµÈ °´Ã¼³»ÀÇ Çʵ带 º¯°æÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
Object Ŭ·¡½ºÀÇ clone ¸Þ¼µå´Â ƯÁ¤ÀÇ º¹Á¦ 󸮸¦ ½ÇÇàÇÕ´Ï´Ù. ¿ì¼±, ÀÌ °´Ã¼ÀÇ Å¬·¡½º°¡ Cloneable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â CloneNotSupportedExceptionÀÌ ¹ß»ý µË´Ï´Ù. ¹è¿Àº ¸ðµÎ, ÀÎÅÍÆäÀ̽º Cloneable¸¦ ±¸ÇöÇϰí ÀÖ´Â °ÍÀ̶ó°í º¸¿©Áö´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ±¸ÇöÇϰí ÀÖÁö ¾Ê´Â °æ¿ì, ÀÌ ¸Þ¼µå´Â ÀÌ °´Ã¼ÀÇ Å¬·¡½ºÀÇ »õ·Î¿î ÀνºÅϽº¸¦ »ý¼ºÇØ, ±× Çʵ带 ¸ðµÎ, ÀÌ °´Ã¼ÀÇ ´ëÀÀÇÏ´Â °¢ ÇʵåÀÇ ³»¿ëÀ¸·Î ÃʱâÈÇÕ´Ï´Ù. À̰ÍÀº ´ëÀÔ°ú °°¾Æ, ÇʵåÀÇ ³»¿ë ÀÚ½ÅÀÌ º¹Á¦µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. Áï ÀÌ ¸Þ¼µå´Â °´Ã¼ÀÇ ¡¸»þ·ÎÄÚÇÇ¡¹¸¦ »ý¼ºÇÕ´Ï´Ù¸¸, ¡¸µö Ä«ÇÇ¡¹´Â »ý¼ºÇÏÁö ¾Ê½À´Ï´Ù.
Ŭ·¡½º Object ÀÚü´Â Cloneable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏÁö ¾Ê±â ¶§¹®¿¡ Ŭ·¡½º°¡ Object ÀÎ clone ¸Þ¼µå¸¦ È£ÃâÇϸé, ½ÇÇà½Ã¿¡ ¿¹¿Ü°¡ ¹ß»ý µË´Ï´Ù.
CloneNotSupportedException
- °´Ã¼ÀÇ Å¬·¡½º°¡ Cloneable
ÀÎÅÍÆäÀ̽º¸¦ Áö¿ø
Çϰí ÀÖÁö ¾Ê´Â °æ¿ì. clone
¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÑ ¼ºê Ŭ·¡½ºµµ, ÀνºÅϽº¸¦ º¹Á¦ÇÒ ¼ö ¾ø´Â °ÍÀ» ³ªÅ¸³»±â À§Çؼ ÀÌ ¿¹¿Ü¸¦ Throw ÇÏ´Â ÀÏÀÌ ÀÖ´ÂCloneable
public String toString()
toString
¸Þ¼µå´Â ÀÌ °´Ã¼¸¦ ¡¸ÅؽºÆ®·Î Ç¥ÇöÇÑ´Ù¡¹Ä³¸¯ÅÍ ¶óÀÎÀ» ¸®ÅÏÇÕ´Ï´Ù. ÀÌ °á°ú´Â Àΰ£ÀÌ ÀÐÀ» ¼ö ÀÖ´Â °£°áÇϰí À¯ÀÍÇÑ Á¤º¸¿©¾ß ÇÕ´Ï´Ù. ¸ðµç ¼ºê Ŭ·¡½º¿¡¼
ÀÌ ¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.
Object
Ŭ·¡½ºÀÇ toString
¸Þ¼µå´Â °´Ã¼ÀÇ ÆÄ»ý¿øÀÇ Å¬·¡½º¸í, @ ºÎÈ£ (@
) ¹× °´Ã¼ÀÇ ÇØ½Ã ÄÚµåÀÇ ºÎÈ£ ¾øÀ½ 16 ÁøÇ¥ÇöÀ¸·ÎºÎÅÍ ±¸¼ºµÇ´Â ij¸¯ÅÍ ¶óÀÎÀ» ¸®ÅÏÇÕ´Ï´Ù. Áï, ÀÌ ¸Þ¼µå´Â ´ÙÀ½ÀÇ °ª°ú µ¿ÀÏÇÑ Ä³¸¯ÅÍ ¶óÀÎÀ» ¸®ÅÏÇÕ´Ï´Ù.
getClass(). getName() + '@' + Integer.toHexString(hashCode())
public final void notify()
wait
¸Þ¼µå¸¦ 1°³
È£ÃâÇØ, °´Ã¼ÀÇ ¸ð´ÏÅÍ·Î ´ë±âÇÕ´Ï´Ù.
Àç°³µÈ threadÀÇ Ã³¸®´Â ÇöÀçÀÇ thread°¡ ÀÌ °´Ã¼ÀÇ ¶ôÀ» ÇØÁ¦ÇÒ ¶§±îÁö´Â ÁøÇàµÉ ¼ö°¡ ¾ø½À´Ï´Ù. Àç°³µÈ thread´Â ´Ù¸¥ thread¿Í °°ÀÌ, ÀÌ °´Ã¼¿Í µ¿±â Çϵµ·Ï Àû±ØÀûÀ¸·Î °Ü·ì´Ï´Ù. ¿¹¸¦ µé¾îÀÌ °´Ã¼¸¦ Àá±×´Â ´ÙÀ½ÀÇ thread°¡ µÇ·Á°í ÇÏ´Â °æ¿ì¿¡¼µµ, Àç°³µÈ threadÀÇ Ãë±ÞÀº ´Ù¸¥ threadº¸´Ù ¿ì¼¼ÇÏÁöµµ ¿¼¼ÇÏÁöµµ ¾Ê½À´Ï´Ù.
ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀº ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯ÇÏ´Â thread°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ µÇ´Â ¹æ¹ýÀº ´ÙÀ½ÀÇ 3 ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
synchronized
¹®ÀÇ º»Ã¼¸¦ ½ÇÇàÇÑ´ÙClass
ÇüÀÇ °´Ã¼ÀÇ °æ¿ì´Â ±× Ŭ·¡½ºÀÇ syncronized static ¸Þ¼µå¸¦ ½ÇÇàÇÑ´Ù
°´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯ÇÒ ¼ö ÀÖ´Â thread´Â 1ȸ¿¡ 1°³ »ÓÀÔ´Ï´Ù.
IllegalMonitorStateException
- ÇöÀçÀÇ thread°¡ ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê´Â °æ¿ìnotifyAll()
,
wait()
public final void notifyAll()
wait
¸Þ¼µå¸¦ È£ÃâÇϸé, °´Ã¼ÀÇ ¸ð´ÏÅÍ·Î ´ë±âÇÕ´Ï´Ù.
Àç°³µÈ threadÀÇ Ã³¸®´Â ÇöÀçÀÇ thread°¡ ÀÌ °´Ã¼ÀÇ ¶ôÀ» ÇØÁ¦ÇÒ ¶§±îÁö´Â ÁøÇàµÉ ¼ö°¡ ¾ø½À´Ï´Ù. Àç°³µÈ thread´Â ´Ù¸¥ thread¿Í °°ÀÌ, ÀÌ °´Ã¼¿Í µ¿±â Çϵµ·Ï Àû±ØÀûÀ¸·Î °Ü·ì´Ï´Ù. ¿¹¸¦ µé¾îÀÌ °´Ã¼¸¦ Àá±×´Â ´ÙÀ½ÀÇ thread°¡ µÇ·Á°í ÇÏ´Â °æ¿ì¿¡¼µµ, Àç°³µÈ threadÀÇ Ãë±ÞÀº ´Ù¸¥ threadº¸´Ù ¿ì¼¼ÇÏÁöµµ ¿¼¼ÇÏÁöµµ ¾Ê½À´Ï´Ù.
ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀº ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯ÇÏ´Â thread »Ó¸¸ÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ µÇ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â notify
¸Þ¼µå¸¦ ÂüÁ¶ÇϽʽÿÀ.
IllegalMonitorStateException
- ÇöÀçÀÇ thread°¡ ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê´Â °æ¿ìnotify()
,
wait()
public final void wait(long timeout) throws InterruptedException
notify()
¸Þ¼µå ¶Ç´Â notifyAll()
¸Þ¼µå¸¦ È£ÃâÇÏ´ÂÁö, ÁöÁ¤µÈ ½Ã°£ÀÌ °æ°úÇÒ ¶§±îÁö, ÇöÀçÀÇ thread¸¦ ´ë±â½Ãŵ´Ï´Ù.
ÇöÀçÀÇ thread´Â ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ÇöÀçÀÇ thread (¿©±â¿¡¼´Â T ·Î ÇÑ´Ù)¸¦ ÀÌ °´Ã¼ÀÇ ´ë±â ¼¼Æ®¿¡ ³Ö°í ³ª¼, ÀÌ °´Ã¼¿¡ ´ëÇÑ µ¿±â ¿ä±¸¸¦ ¸ðµÎ Æó±âÇÕ´Ï´Ù. thread T´Â threadÀÇ ½ºÄÉÁÙ¸µ¿¡ ´ëÇØ¼´Â ¹«È¿·Î ¿©°ÜÁ® ¾Æ·¡ÀÇ 4°³ÀÇ ¾î¶² °ÍÀΰ¡°¡ ¹ß»ýÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
³¢¾îµé¾ú´Ù
thread´Â ÅëÁö, ³¢¾îµé¾î, ŸÀÓ ¾Æ¿ô¾øÀÌ Àç°³µÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. À̰ÍÀº ¡¸½ºÇÁ¸®¾Æ½º¿þÀÌÅ©¾Ð¡¹À̶ó°í ºÒ¸®°í ÀÖ½À´Ï´Ù. ½ºÇÁ¸®¾Æ½º¿þÀÌÅ©¾ÐÀº ½ÇÁ¦·Î´Â º¸±â µå¹°°Ô ¹Û¿¡ ¹ß»ýÇÕ´Ï´Ù¸¸, ¾îÇø®ÄÉÀ̼ǿ¡¼´Â thread°¡ Àç°³µÇ´Â °ÍÀ¸·Î ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ´Â Á¶°ÇÀ» Å×½ºÆ®ÇØ, Á¶°ÇÀÌ Ã¤¿öÁöÁö ¾ÊÀº °æ¿ì´Â ´ë±â¸¦ °è¼ÓÇØ, ½ºÇÁ¸®¾Æ½º¿þÀÌÅ©¾ÐÀ¸·ÎºÎÅÍ º¸È£ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Áï, ´ÙÀ½°ú °°ÀÌ ·çÇÁ·Î Ç×»ó ´ë±â°¡ ¹ß»ýÇϵµ·Ï ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout); ... // Perform action appropriate to condition }(ÀÌ ÅäÇÈÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Doug Lea Àú ¡¸Concurrent Programming in Java (Second Edition)¡¹(Addison-Wesley, 2000)ÀÇ ¼½¼Ç 3.2. 3 À̳ª Joshua Bloch Àú ¡¸Effective Java Programming Language Guide¡¹(Addison-Wesley, 2001)ÀÇÀÚ½Ä ÅÛ 50À» ÂüÁ¶ÇϽʽÿÀ).
ÇöÀçÀÇ thread°¡ ´ë±âÁß¿¡ ´Ù¸¥ thread¿¡
ÇØ³¢¾îµé¾îÁ³À»
°æ¿ì´Â InterruptedExceptionÀÌ
¹ß»ý µË´Ï´Ù. ÀÌ ¿¹¿Ü´Â ÀÌ °´Ã¼ÀÇ ¶ô ½ºÅ×ÀÌÅͽº°¡ Àü¼ú°ú °°ÀÌ º¹¿øµÉ ¶§±îÁö´Â Throw µÇÁö ¾Ê½À´Ï´Ù.
ÇöÀçÀÇ thread¸¦ ÀÌ °´Ã¼ÀÇ ´ë±â ¼¼Æ®¿¡ ³ÖÀ» ¶§, wait ¸Þ¼µå´Â ÀÌ °´Ã¼ÀÇ ¶ô¸¸À» ÇØÁ¦ÇÕ´Ï´Ù. ÇöÀçÀÇ thread°¡ µ¿±âÈÇÒ °¡´É¼ºÀÌ ÀÖ´Â ±× ´Ù¸¥ °´Ã¼´Â ÀÌ thread°¡ ´ë±âÇϰí ÀÖ´Â µ¿¾Èµµ ¶ô µÈ´ë·Î ÀÔ´Ï´Ù.
ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀº ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯ÇÏ´Â thread »Ó¸¸ÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ µÇ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â notify
¸Þ¼µå¸¦ ÂüÁ¶ÇϽʽÿÀ.
timeout
- ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§ÀÇ ´ë±â ½Ã°£
IllegalArgumentException
- timeout
°ªÀÌ ºÎÀÎ °æ¿ì
IllegalMonitorStateException
- ÇöÀçÀÇ thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê´Â °æ¿ì
InterruptedException
- ÇöÀçÀÇ thread°¡ ÅëÁö¸¦ ´ë±âÇϱâ Àü ¶Ç´Â ´ë±âÁß¿¡
´Ù¸¥ thread°¡ ÇöÀçÀÇ thread¿¡ ³¢¾îµé¾úÀ» °æ¿ì. ÀÌ ¿¹¿Ü°¡ Throw µÇ¸é, ÇöÀçÀÇ threadÀÇ ¡¸ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº¡¹´Â Ŭ¸®¾î µÇ´Ânotify()
,
notifyAll()
public final void wait(long timeout, int nanos) throws InterruptedException
notify()
¸Þ¼µå ¶Ç´Â notifyAll()
¸Þ¼µå¸¦ È£ÃâÇÏ´ÂÁö, ´Ù¸¥ thread°¡ ÇöÀçÀÇ thread¿¡ ÀÎÅÍ·´Æ®¸¦ °É°Å³ª ÁöÁ¤µÈ ¾çÀÇ ½Ç½Ã°£ÀÌ °æ°úÇÒ ¶§±îÁö, ÇöÀçÀÇ thread¸¦ ´ë±â½Ãŵ´Ï´Ù.
ÀÌ ¸Þ¼µå´Â Àμö°¡ 1°³ÀÇ wait
¸Þ¼µå¸¦ ´à¾Æ ÀÖ½À´Ï´Ù¸¸, ŸÀÓ ¾Æ¿ô±îÁöÀÇ ´ë±â ½Ã°£ÀÇ ¾çÀ» º¸´Ù ¼¼¼¼ÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù
. ³ª³ëÃÊ´ÜÀ§ÀÇ ½Ç½Ã°£Àº ´ÙÀ½ÀÇ ½Ä¿¡¼ ÁöÁ¤ÇÕ´Ï´Ù.
1000000*timeout+nanos
±× ¿ÜÀÇ ¸é¿¡¼´Â ÀÌ ¸Þ¼µåÀÇ µ¿ÀÛÀº Àμö°¡ 1°³ÀÇ wait(long)
¸Þ¼µå¿Í °°½À´Ï´Ù. ƯÈ÷, wait(0, 0)´Â wait(0)¿Í
°°Àº Àǹ̰¡ µË´Ï´Ù.
ÇöÀçÀÇ thread´Â °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread´Â ÀÌ ¸ð´ÏÅÍÀÇ ¼ÒÀ¯±ÇÀ» ÇØ¹æÇØ, ´ÙÀ½ÀÇ ¾î¶² °ÍÀΰ¡ »óŰ¡ ¹ß»ýÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
notify
¸Þ¼µå ¶Ç´Â notifyAll
¸Þ¼µå¸¦ È£ÃâÇÏ´Â °Í¿¡ÀÇÇØ ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅÍ·Î ´ë±âÁßÀÇ thread¿¡ ÅëÁö¸¦ º¸³», ÀÌ thread¸¦ Àç°³ÇÑ´Ùtimeout
Àμö·Î ÁöÁ¤ÇÑ Å¸ÀÓ ¾Æ¿ô ±â°£ (¹Ð¸® ¼¼ÄÁµå ´ÜÀ§)°únanos
Àμö·Î ÁöÁ¤ÇÑ Å¸ÀÓ ¾Æ¿ô ±â°£ (³ª³ëÃÊ´ÜÀ§)À» ´õÇÑ ½Ã°£ÀÌ °æ°úÇÑ´Ù
thread´Â ¸ð´ÏÅÍÀÇ ¼ÒÀ¯±ÇÀ» ÀçÂ÷ ȹµæÇÒ ¶§±îÁö ´ë±âÇØ, ±× ÈÄ ½ÇÇàÀ» Àç°³ÇÕ´Ï´Ù.
Àμö°¡ 1°³ÀÇ ¹öÀü¿¡ ¼´Â ÀÎÅÍ·´Æ®³ª ½ºÇÁ¸®¾Æ½º¿þÀÌÅ©¾ÐÀÌ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ¼µå´Â Ç×»ó ·çÇÁ·Î »ç¿ëµÉ Çʿ䰡 ÀÖ½À´Ï´Ù.
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout, nanos); ... // Perform action appropriate to condition }ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀº ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯ÇÏ´Â thread »Ó¸¸ÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ µÇ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â
notify
¸Þ¼µå¸¦ ÂüÁ¶ÇϽʽÿÀ.
timeout
- ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§ÀÇ ´ë±â ½Ã°£nanos
- Ãß°¡ÀÇ ´ë±â ½Ã°£ (³ª³ëÃÊ´ÜÀ§·Î 0 ~ 999999
¹üÀ§)
IllegalArgumentException
- ´ë±â ½Ã°£ÀÇ °ªÀÌ ºÎÀÇ °æ¿ì, ¶Ç´Â nanos
°ªÀÌ 0 ~ 999999
¹üÀ§¿ÜÀÇ °æ¿ì
IllegalMonitorStateException
- ÇöÀçÀÇ thread°¡ ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê´Â °æ¿ì
InterruptedException
- ÇöÀçÀÇ thread°¡ ÅëÁö¸¦ ´ë±âÇϱâ Àü ¶Ç´Â ´ë±âÁß¿¡
´Ù¸¥ thread°¡ ÇöÀçÀÇ thread¿¡ ³¢¾îµé¾úÀ» °æ¿ì. ÀÌ ¿¹¿Ü°¡ Throw µÇ¸é, ÇöÀçÀÇ threadÀÇ ¡¸ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº¡¹´Â Ŭ¸®¾î µÈ´Ùpublic final void wait() throws InterruptedException
notify()
¸Þ¼µå ¶Ç´Â notifyAll()
¸Þ¼µå¸¦ È£ÃâÇÒ ¶§±îÁö, ÇöÀçÀÇ thread¸¦ ´ë±â½Ãŵ´Ï´Ù. Áï, ÀÌ ¸Þ¼µåÀÇ µ¿ÀÛÀº wait(0)¸¦ È£ÃâÇßÀ» °æ¿ì¿Í °°½À´Ï´Ù.
ÇöÀçÀÇ thread´Â ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread´Â ÀÌ ¸ð´ÏÅÍÀÇ ¼ÒÀ¯±ÇÀ» ÇØ¹æÇØ, ´Ù¸¥ thread°¡ notify
¸Þ¼µå ¶Ç´Â notifyAll
¸Þ¼µå¸¦ È£ÃâÇØ ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅͻ󿡼 ´ë±âÇÏ´Â thread¿¡ ÅëÁö¸¦ º¸³¾ ¶§±îÁö ´ë±âÇÕ´Ï´Ù. ±× ÈÄ, thread´Â ¸ð´ÏÅÍÀÇ ¼ÒÀ¯±ÇÀ» ÀçÂ÷ ÃëµæÇÒ ¶§±îÁö ´ë±âÇÏ°í ³ª¼ ½ÇÇàÀ» Àç°³ÇÕ´Ï´Ù.
Àμö°¡ 1°³ÀÇ ¹öÀü¿¡ ¼´Â ÀÎÅÍ·´Æ®³ª ½ºÇÁ¸®¾Æ½º¿þÀÌÅ©¾ÐÀÌ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ¼µå´Â Ç×»ó ·çÇÁ·Î »ç¿ëµÉ Çʿ䰡 ÀÖ½À´Ï´Ù.
synchronized (obj) { while (<condition does not hold>) obj.wait(); ... // Perform action appropriate to condition }ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀº ÀÌ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯ÇÏ´Â thread »Ó¸¸ÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅÍÀÇ ¿À³Ê°¡ µÇ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â
notify
¸Þ¼µå¸¦ ÂüÁ¶ÇϽʽÿÀ.
IllegalMonitorStateException
- ÇöÀçÀÇ thread°¡ °´Ã¼ÀÇ ¸ð´ÏÅ͸¦ ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê´Â °æ¿ì
InterruptedException
- ÇöÀçÀÇ thread°¡ ÅëÁö¸¦ ´ë±âÇϱâ Àü ¶Ç´Â ´ë±âÁß¿¡
´Ù¸¥ thread°¡ ÇöÀçÀÇ thread¿¡ ³¢¾îµé¾úÀ» °æ¿ì. ÀÌ ¿¹¿Ü°¡ Throw µÇ¸é, ÇöÀçÀÇ threadÀÇ ¡¸ÀÎÅÍ·´Æ® ½ºÅ×ÀÌÅͽº¡¹´Â Ŭ¸®¾î µÇ´Ânotify()
,
notifyAll()
protected void finalize() throws Throwable
finalize
¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇØ, system resource¸¦ ÆÄ±âÇϰųª ±× ¿ÜÀÇ Å¬¸° ¾÷À» ½Ç½ÃÇϰųª ÇÒ ¼ö ÀÖ½À´Ï´Ù
.
finalize ÀϹÝÀûÀÎ ±Ô¾à¿¡¼´Â finalize È£ÃâÀº ¾ÆÁ÷ »ýÁ¸Çϰí ÀÖ´Â ÀÓÀÇÀÇ thread°¡ ÀÌ °´Ã¼¿¡ ¾×¼¼½º ÇÏ´Â ¹æ¹ýÀº ¾øÀ¸¸é JavaTM °¡»ó ¸Ó½ÅÀÌ ÆÇ´ÜÇßÀ» °æ¿ì¿¡ ÇàÇØÁý´Ï´Ù. ´Ù¸¸, ÆÄÀ̳ª¶óÀÌÁîÀÇ Áغñ°¡ ³¡³ °Í ¿ÜÀÇ °´Ã¼ ¶Ç´Â Ŭ·¡½º¸¦ ÆÄÀ̳ª¶óÀÌÁîÇϱâ À§ÇÑ Ã³¸®ÀÇ °á°ú ±×·¸°Ô µÇ¾úÀ» °æ¿ì¸¦ Á¦¿ÜÇÕ´Ï´Ù. finalize ¸Þ¼µå´Â ÀÌ °´Ã¼¸¦ ´Ù¸¥ thread·Î ´Ù½Ã ÀÌ¿ë °¡´ÉÇÏ°Ô ÇÏ´Â Àϵµ Æ÷ÇÔÇØ, ÀÓÀÇÀÇ ¾×¼ÇÀ» ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù . ±×·¯³ª, finalize º¸Åë ÀÇ ¿ëµµ´Â °´Ã¼¸¦ Àç»ý ºÒ°¡´ÉÇÑ ÇüÅ·ΠÆÄ±âÇϱâ ÀüÀÇ Å¬¸° ¾÷À» ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ÀÔÃâ·ÂÀÇ Á¢¼ÓÀ» ³ªÅ¸³»´Â °´Ã¼ÀÇ finalize ¸Þ¼µå´Â °´Ã¼°¡ ¿µ±¸ÀûÀ¸·Î ÆÄ±âµÇ±â Àü¿¡ Á¢¼ÓÀ» Àý´ÜÇϱâ À§ÇÑ ¸í½ÃÀûÀÎ ÀÔÃâ·Â 󸮸¦ ½Ç½ÃÇÕ´Ï´Ù.
Object Ŭ·¡½ºÀÇ finalize ¸Þ¼µå´Â Ưº°ÇÑ Ã³¸®¸¦ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. ÀϹÝÀûÀ¸·Î ¾Æ¹«°Íµµ ÇÏÁö ¾Ê°í º¹±ÍÇÕ´Ï´Ù. Object ¼ºê Ŭ·¡½º´Â ÀÌ Á¤ÀǸ¦ ¿À¹ö¶óÀ̵å(override) ÇÒ ¼ö ÀÖ½À´Ï´Ù .
Java ÇÁ·Î±×·¥ ¾ð¾î´Â ÀÓÀÇÀÇ °´Ã¼¿¡ ´ëÇØ ¾î´À thread°¡ finalize ¸Þ¼µå¸¦ È£ÃâÇÏ´ÂÁö¸¦ º¸ÁõÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª, finalize¸¦ È£ÃâÇÏ´Â thread°¡ »ç¿ëÀÚ¿¡ °Ô °¡½ÃÀÎ µ¿±â ¶ôÀ» finalize È£ÃâÀÇ ½ÃÁ¡¿¡¼´Â º¸°ü À¯ÁöÇϰí ÀÖÁö ¾Ê´Â °Í¿¡ ºÙ¾î º¸ÁõµË´Ï´Ù. ijġ µÇÁö ¾Ê´Â ¿¹¿Ü¸¦ finalize ¸Þ¼µå°¡ Throw ÇßÀ» °æ¿ì, ¿¹¿Ü´Â ¹«½ÃµÇ¾î °´Ã¼ÀÇ ÆÄÀ̳ª¶óÀÌÁî´Â Á¾·áÇÕ´Ï´Ù.
¾î´À °´Ã¼¿¡ ´ëÇØ finalize ¸Þ¼µå°¡ ºÒ·Á °£ µÚ¿¡ ´ÙÀ½ÀÇ Ã³¸®°¡ ¹ß»ýÇÏ´Â °ÍÀº ¾ÆÁ÷ »ýÁ¸Çϰí ÀÖ´Â ÀÓÀÇÀÇ thread°¡ ÀÌ °´Ã¼¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾øÀ¸¸é Java °¡»ó ¸Ó½ÅÀÌ ´Ù½Ã ÆÇ´ÜÇßÀ» ¶§ÀÔ´Ï´Ù. À̰Ϳ¡´Â ÆÄÀ̳ª¶óÀÌÁîÀÇ Áغñ°¡ µÇ¾î ÀÖ´Â °Í ¿ÜÀÇ °´Ã¼ ¶Ç´Â Ŭ·¡½º¿¡ ÀÇÇØ ¹ß»ýÇÑ Ã³¸®µµ Æ÷ÇÔµÇ¾î ±× ½ÃÁ¡¿¡¼ ÀÌ °´Ã¼´Â ÆÄ±âµË´Ï´Ù.
ÀÓÀÇÀÇ °´Ã¼¿¡ ´ëÇØ Java °¡»ó ¸Ó½ÅÀÌ finalize ¸Þ¼µå¸¦ ¿©·¯ Â÷·Ê È£ÃâÇÒ °ÍÀº ¾ø½À´Ï´Ù.
finalize ¸Þ¼µå¿¡ ÀÇÇØ ¿¹¿Ü°¡ Throw µÇ¸é, finalize
¸Þ¼µåÀÇ Ã³¸®´Â Á¤ÁöµË´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â ¹«½ÃµË´Ï´Ù.
Throwable
- ÀÌ ¸Þ¼µå·Î »ý±ä Exception
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.