Internet °ü·Ã ÀÚ·á |
---|
Á¦¸ñ | [Java] ¾²·¹µå #1 1998/12/03 (17:31) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 56 |
Á¶È¸ | 987 |
º»¹® |
¿ì¼± ¾²·¹µåÀÇ »çÀüÀûÀÎ Àǹ̰¡ ±Ã±ÝÇϽÇÅÙµ¥¿ä. ã¾Æº¸´Ï ½Ç, ½ÇŸ·¡µîµîÀÌ´õ±º¿ä. ¾Ë·º»ê´õ ´ë¿ÕÀÌ ¾î´À Áö¹æÀ» ¿øÁ¤Áß¿¡ ²¿ÀÎ ½ÇŸ·¡¸¦ Ç®¼ö ÀÖÀ¸¸é ¼¼°èÀÇ Á¦¿ÕÀÌ µÈ´Ù´Â ¸»¿¡ ȤÇØ ½ÇŸ·¡¸¦ Ä®·Î ÀÚ¸£°í, Ç®¾ú´Ù´Â À̾߱Ⱑ ÀüÇØÁú Á¤µµ·Î ¾²·¹µå¿¡ ´ëÇÑ ¿ª»ç´Â ±æ´Ù°í º¼ ¼ö ÀÖÁÒ(³ó´ã) ±×·³ ¿ì¸®µµ ¾Ë·º»ê´õ ´ë¿Õó·³ ½ÇŸ·¡¸¦ ²÷¾î¹ö¸®´Â °ú°¨¼ºÀ¸·Î ÀÚ¹Ù¸¦ ÅëÇØ ¼¼°è¸¦ Á¤º¹Çϱâ À§ÇØ ÀÚ¹ÙÀÇ ½ÇŸ·¡ÀÎ ¾²·¹µå¿Í ¸ÖƼ¾²·¹µå¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÁÒ. 1. ¾²·¹µå¿Í ¸ÖƼ¾²·¹µå ¿ì¸®°¡ »ì°í ÀÖ´Â ¼¼°è°¡ Á¡Á¡ ´õ º¹ÀâÇØÁ® °¡°í ÀÖÁö¿ä. ½Å¼¼ ´ë¶ó°í ºÒ¸®´Â ÀþÀº ÃþÀº Çѹø¿¡ ÇϳªÀÇ ÀÏÀ» ÇÏ´Â °ÍÀ» ½È¾î ÇÏ´Â µ¥ ´ëÃæ ±× ¸ð½ÀÀ» º¸¸é, ÇÑÂÊ ±Í¿¡´Â À̾îÆùÀ» ²Å°í, ÄÄÇ»ÅÍ ¾Õ¿¡ ¾É¾Æ ¿À¶ôÀ» Çϸç, °¡²û¾¿ ¸¸ÈÃ¥À» ÃÄ´Ù º¸°í, ¿·¿¡ Àִ ģ±¸¿Í À̾߱⸦ Çϸç, ¾î¸Ó´Ï°¡ µé¾î¿À½ÃÁö´Â ¾ÊÀ»±î ³ë½ÉÃÊ»ç, ¹®ÀÌ ¿¸® ´Â°¡ ÁÖ½ÃÇÏ°Ô µÇÁö¿ä. ±â¼º¼¼´ëµéÀº ½Å¼¼´ëµéÀÌ ¼¼»óÀ» »ì¾Æ°¡´Â ¹æ½ÄÀ» ÀÌÇØÇÏÁö ¸øÇϸç, ¿ì¸®¸¦ µÑ·¯ ½Î°í ÀÖ´Â ¼¼»óÀÇ ¸ð½ÀÀ» ÀÌ ÇØÇÏÁö ¸øÇÑ´Ù°í ÇÒ ¼ö ÀÖÁÒ. ¹°·Ð ½Å¼¼´ë°¡ ±â¼º¼¼´ë¸¦ ÀÌÇØ ¸øÇÏ ´Â °Íµµ ÀÖÁö¸¸. ¿ÂÅë À⵿»ç´Ï Á¤º¸ Åõ¼ºÀÌÀÎ ½Å¹®°ú ¹æ¼Û, Ç×»ó »õ·Î¿öÁö´Â À½¾Ç, Áñ°Å¿òÀÌ °¡µæÇÑ ÄÄÇ»ÅÍ ¿À¶ôµîµî !! ÀÌ·± ¸ðµç °ÍÀ» Çѹø¿¡ Çϳª¾¿ ¹Þ¾ÆµéÀ̰ųª Áñ±â±â¿¡´Â ³Ê¹« ½Ã°£ÀÌ ºÎÁ·ÇÏ ¸ç, ½Ã°£ÀÌ Áö³ª°í ³ª¸é ¾Æ¹«·± ¾µ¸ð°¡ ¾ø´Ù´Â °Íµµ ÀÌÇØ ÇØÁÖÁö ¸ø ÇÏ´Â ¾î¸£½Åµé. Àΰ£ÀÇ °¨°¢Àº º»ÁúÀûÀ¸·Î ¸ÖƼ¹Ìµð¾î ÁöÇâÀûÀÌ´Ù´Â °ÍÀº ´© ±¸³ª ´Ù ¾Æ´Â »ç½ÇÀϻӴõ·¯, ÇϳªÀÇ °¨°¢ÀÌ¶óµµ ±ÕÇüÀ» ¸ÂÃßÁö ¾Ê À¸¸é, °¨°¢ÀÇ ÆòÇüÀÌ ¹«³ÊÁö°í ¾ÈÁ¤À» ãÁö ¸øÇÏ°í ¾ÈÀýºÎÀýÇÏ°Ô µÇ ÁÒ. ÀÌ·¸°ÔµÇ¸é Á¤¼Àû ºÒ¾È±îÁö ¸ô°í°¡ ½É°¢ÇÑ Á¤½ÅÀûÀÎ Áúº´À» ¾Î °Ô ÇÒ ¿ì·Áµµ ÀÖ°í... ¿ì¸®´Â ¹«¾ùÀΰ¡¸¦ ¶Ñ·ÇÈ÷ ¹Ù¶óº¸¸é¼µµ ÁÖÀ§ ¿¡¼ ¾ß±¸°øÀÌ ³¯¶ó¿À´Â °ÍÀ» ÀνÄÇÒ ¼ö ÀÖÀ¸¸ç, ¹ÙÇϳª ¸ðÂ¥¸£Æ®ÀÇ À½¾ÇÀ» µéÀ¸¸é¼, Ä£±¸¿Í ´ëȸ¦ ÇÒ¼ö Àִµ¥, ¾ÆÁÖ ³î¶ó¿î ´É·ÂÀÌ Áö¿ä. ±×·¸Áö ¸øÇϸé, ´Ù¹æ°ú Ä«Æä¿¡¼ Èê·¯³ª¿À´Â À½¾ÇÀº ÀüºÎ´Ù ´ëȸ¦ °¡·Î¸·´Â À庮ÀÏ »ÓÀε¥µµ, ¿©ÀüÈ÷ Åͺ¸ÀÇ °ËÀº °í¾çÀÌ µîÀÇ À½¾ÇÀº °è¼ÓµÇ°í ÀÖ´Ù. ÄÄÇ»ÅÍ·Î ±¸ÇöÇÏ´Â ÇÁ·Î±×·¥µµ ¿ª½Ã ¸¶Âù°¡ÁöÀÔ´Ù. »ç¶÷µéÀº ÄÄÇ»Å͸¦ ÀÌ¿ëÇØ À½¾ÇÀ» Àü¼Û¹Þ¾Æ ½ºÇÇÄ¿¸¦ ÅëÇØ Èê·¯ ³ª¿À°Ô ÇÏ°í, ÇÑÂÊ¿¡¼ ȸéÀ» ½ºÅ©·ÑÇؼ ¿øÇÏ´Â ´Ü¾î³ª ¹®ÀåÀ» ãÀ¸¸ç, ÇÑÂÊ¿¡ ¼´Â »õ·Î¿î ÆÄÀÏÀ» FTP¸¦ ÀÌ¿ëÇÏ¿© Àü¼Û¹Þ±â¸¦ ¹Ù¶óÁö¿ä. Àú¸¸ ±× ·²¼öµµ ÀÖÁö¸¸, Á¶±Ý¸¸ ÀÚ½ÅÀÌ ÆÄ¿ö À¯Àú¶ó°í »ý°¢ÇÏ´Â ºÐµéÀº ´Ùµé Àúó·³ ´À³¥ °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷ÀÌ ¿©·¯°³ÀÇ ÀÛ¾÷À¸·Î ³ª´µ¾îÁ® ÀÖ´Â °Íº¸´Ù´Â ´ÜÀÏÇÑ ÀÛ¾÷¿¡¼ ¿©·¯°³°¡ µ¿½Ã¿¡ ¼öÇàµÇ±â¸¦ ¹Ù¶ó ´Â °ÍÀÌ´Ù. ÀÚ¹Ù´Â Àΰ£ÀÇ ¸ÖƼ¹Ìµð¾î ÁöÇâÀûÀΠƯ¼ºÀ» ¹Ý¿µÇϱâ À§ ÇØ ¾²·¹µå¶ó´Â °³³äÀ» µµÀÔÇÏ¿©, ¸ÖƼ¾²·¹µå¸¦ ÅëÇØ ÃÖÁ¾ÀûÀ¸·Î ¿Ï ¼ºÇÑ´Ù. ¸ÖƼ¾²·¹µå¸¦ ÀÌ¿ëÇÏÁö ¾Ê´Â ÀÚ¹ÙÇÁ·Î±×·¥Àº ÀÚ¹Ù°¡ Á¦°øÇÏ ´Â °¡È÷ Çõ¸íÀûÀΠȯ°æÀ» Æ÷±âÇÏ´Â °ÍÀ̳ª ´Ù¸§¾ø´Ù. ¾²·¹µå¿Í ¸ÖƼ ¾²·¹µå¿¡ ´ëÇؼ õõÈ÷ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. 1.1. ŽºÅ·°ú ¸ÖƼŽºÅ· ÀÚ¹Ù¿¡¼´Â ³µ¥¾øÀÌ ¾²·¹µå(Thread)¸¦ »ç¿ëÇÑ´Ù. ÀÌ ¾²·¹µå¸¦ ÀÌ¿ëÇϸé, ¸ÖƼ¾²·¹µùÀ» ÀÌ¿ëÇÒ ¼ö°¡ ÀÖ´Ù°í Çϴµ¥, JDK¿¡ »ðÀ﵂ ¾î ÀÖ´Â, Sort ¿¹Á¦¸¦ º¸¸é, ¸ÖƼ¾²·¹µå¿¡ ´ëÇØ ³î¶ó¿òÀ» ±ÝÇÒ ¼ö°¡ ¾ø´Ù. Ȥ½Ã ¸ÖƼ¾²·¹µùÀÌ ¸ÖƼŽºÅ·(MultiTasking)À» ÀÚ¹Ù¿¡¼ ´Ù ¸£°Ô ºÎ¸£´Â °ÍÀÌ ¾Æ´Ñ°¡ ÇÏ´Â ÀDZ¸½ÉÀÌ µé°ÍÀÌ´Ù. ±×·¯³ª ¸ÖƼŽº Å·Àº ¿©·¯°¡Áö ÀÛ¾÷À» µ¿½Ã¿¡ ¼öÇàÇÏ´Â °ÍÀÌ¸ç ´ëÇ¥ÀûÀÎ ¿¹°¡ À©µµ ¿ìÁî3.1ÀÌ µÉ °ÍÀÌ´Ù. À©µµ¿ì¸¦ ½ÇÇà½ÃÅ°°í ¿öµå¸¦ ÅëÇØ ¹®¼¸¦ ÀÛ ¼ºÇÏ°í, ÇÑÆíÀ¸·Î´Â ³×Æ®½ºÄÉÀÌÇÁ¸¦ ¶ç¿ö³õ°í¼ ÀÎÅͳÝÀ» Ç×ÇØÇÒ ¼ö ÀÖ´Â ÀÛ¾÷¹æ¹ýÀÌ´Ù. ¸ÖƼ¾²·¹µùÀº ÇϳªÀÇ ÀÛ¾÷À» ½ÇÇà½ÃÅ°¸é, ±×¾È ¿¡ ¿©·¯°³ÀÇ ¾²·¹µå°¡ °¢±â ÁÖ¾îÁø ÀÏÀ» ÇÏ´Â °ÍÀÌ´Ù. Â÷ÀÌ´Â ½ÇÇà µÇ´Â ½ÇÇà´ÜÀ§°¡ ÇϳªÀΰ¡ ¿©·¯°³Àΰ¡·Î ¸ð¾ÆÁö°Ô µÈ´Ù. ÀüÅëÀûÀÎ C¿¡¼´Â ´ÜÀÏÇÑ ½ÇÇàÈ帧À» °®´Â ÇÁ·Î±×·¥¿Ü¿¡´Â ¸¸ µé ¼ö ¾ø¾ú´Ù. ¹°·Ð ȸé»óÀ¸·Î´Â ¿©·¯°³ÀÇ ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇÏ´Â °Í ó·³ º¸ÀÌ°Ô ÇÒ ¼ö ÀÖÀ»·±Áö´Â ¸ô¶óµµ, ±×°ÍÀº µ¡ÀÛ¾÷À̶ó°í ºÒ¸®´Â ´ÜÀÏÇÑ ÇÁ·Î±×·¥ÀÇ È帧À̾ú´Ù. À̸¦ À§ÇØ ÇÁ·Î±×·¡¸Ó´Â °¡´ÉÇÑ ¸ð µç ÀÏÀ» »ý°¢ÇÏ¿© ÇÁ·Î±×·¥À» ÇØ¾ß Çß´Ù. ÀÌ·± ¹®Á¦´Â µµ½º¶ó°í ºÒ ¸®´Â ¹ÝÂÊÂ¥¸® ¿î¿µÃ¼Á¦¶§¹®¿¡ ¹ú¾îÁø ÇÊ¿¬ÀûÀÎ °á°úÀ̱⵵ Çß´Ù. ±×·¯³ª À©µµ¿ìÁî°¡ GUIȯ°æÀ» µµÀÔÇØ ¼º°øÇϱâ´Â ÇßÁö¸¸, ½ÃºÐ ÇÒ ¹æ½ÄÀ» ÀÌ¿ëÇÑ Å¸ÀÓ½½¶óÀ̽º(Time Slice)¸¦ ÅëÇØ ¸ÖƼŽºÅ·À» Èä³»³»´Âµ¥ ±×Ä¡°í ¸»¾Ò´Ù. ÇϳªÀÇ ÀÛ¾÷ÀÌ µ¥µå¶ô¿¡ °É¸®°Ô µÇ¸é, ¾î¿ ¼ö ¾øÀÌ ¸®ºÎÆÃÇØ¾ß ÇÏ´Â ºñ¼±Á¡Çü(Non-preEmpty)¹æ½ÄÀ̾ú±â ¿¡ ±×·¸°Ô ÁÁÀº °ÍÀº ¾Æ´Ï¾ú´Ù. À©µµ¿ìÁîNT·Î À©µµ¿ìÁî°¡ ÁøÈÇÏ¸é ¼, ¼±Á¡Çü ¸ÖƼŽºÅ·À» Áö¿øÇÔÀ¸·Î½á, Áß°£¿¡ ÇϳªÀÇ ÀÛ¾÷ÀÌ ¸ØÃá ´Ù°í Çصµ ±× ÀÛ¾÷¿¡ ÇÒ´çµÈ ÇÁ·Î¼¼½º¸¦ Á¦°ÅÇÔÀ¸·Î½á µ¥µå¶ôÀ» ¸· À» ¼ö°¡ ÀÖ¾ú´Ù. 1.2. ¾²·¹µå ¾²·¹µå¶õ ¹«¾ùÀΰ¡ ? ¸ÕÀú SUN¿¡¼ ¸¸µç ÀÚ¹Ù¹®¼¿¡ ³ª¿Â Á¤ ÀǸ¦ º¸µµ·Ï ÇÏÀÚ. Á¤ÀÇ : ¾²·¹µå´Â ÇÁ·Î±×·¥¾È¿¡¼ ´ÜÀÏÇÑ ¿¬¼ÓÀûÀÎ Á¦¾îÀÇ È帧 ÀÌ´Ù. (Definition : A Thread is a single sequential flow of control within a progrom.) ¹°·Ð ÀÌ ÇÑÁÙÀÇ Á¤ÀǸ¦ ÅëÇØ ¾²·¹µå°¡ ¹«¾ùÀÎÁö ¾Ë±â´Â Èûµé´Ù. ¿ì¼± ±âÁ¸ÀÇ ÇÁ·Î±×·¥ ¹æ½ÄÀÎ ¿¬¼ÓÀûÀÎ ÇÁ·Î±×·¥(Sequential Program)°úÀÇ Â÷À̸¦ ÅëÇØ ¾²·¹µå¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ±âÁ¸ÀÇ ÇÁ·Î±× ·¥µéÀº ´ÜÀÏÇÑ ÀÛ¾÷À» ÇÏ´Â °ÍÀÌ´Ù. ¹°·Ð ÇÁ·Î±×·¥ÀÇ Å©±â°¡ Å©°í ÇÑ ÇÁ·Î±×·¥¾È¿¡ ¿©·¯°³ÀÇ ÀÛ¾÷µéÀÌ µé¾î ÀÖ´Â °æ¿ìµµ ÀÖÁö¸¸, ¿ì¸® ÀÇ °üÁ¡Àº ÇÁ·Î±×·¥ÀÇ ½ÃÀÛ°ú ³¡ÀÌ ÇϳªÀÌ°í, È帧µµ Çϳª¶ó´Â °ÍÀÌ ´Ù. Áï ¼ýÀÚ¸¦ ÀÔ·Â¹Þ¾Æ °è»êÇÏ´Â ÇÁ·Î±×·¥À̸é, ¨çÇÁ·Î±×·¥ÀÌ ½ÃÀÛ ÇÏ°í ¨è¼ýÀÚ¸¦ ÀÔ·Â¹Þ°í ¨éÀԷ¹ÞÀº ¼ýÀÚ°¡ ÀûÇÕÇÑ°¡¸¦ ÆÇ´ÜÇÏ°í ¨ê¼ýÀÚ¸¦ Ãâ·ÂÇϰųª ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ¨ëÇÁ·Î±×·¥À» Á¾·áÇÏ´Â ¿© ·¯°³ÀÇ °úÁ¤µéÀÌ µé¾î ÀÖ´Â ´ÜÀÏÇÑ ÀÛ¾÷ÀÎ °ÍÀÌ´Ù. ±×·³ ¾²·¹µå¿Í´Â ¾î¶² Â÷ÀÌ°¡ ÀÖ´Â °ÍÀϱî ? ºÒÇàÇÏ°Ôµµ ´ÜÀÏÇÑ(Single) ¾²·¹µå´Â À§¿¡¼ ¾ð±ÞµÈ ±âÁ¸ÀÇ ÇÁ·Î ±×·¥µé°ú ¾î¶² Â÷ÀÌÁ¡µµ ãÀ» ¼ö°¡ ¾ø´Ù. ´ÜÀÏÇÑ ¾²·¹µå ¶ÇÇÑ ½ÃÀÛ °ú ³¡À» °¡Áö°í ÀÖ°í, ÇÁ·Î±×·¥»óÀÇ ÇϳªÀÇ ÁöÁ¡¿¡¼ ½ÇÇàµÇ°í ÀÖ´Â °ÍÀ̱⠶§¹®ÀÌ´Ù. ¾Æ¹« °Íµµ ´Ù¸¥ ¹Ù°¡ ¾ø´Ù´Ï !! ´ÜÀÏÇÑ(Single) ¾²·¹µå¿Í ¿¬¼Ó ÀûÀÎ ÇÁ·Î±×·¥(Sequential Program)°ú´Â ¾Æ¹«·± Â÷ÀÌ°¡ ¾ø´Ù. ±×·¯ ³ª ¸ÖƼ¾²·¹µå(MultiThread)¿Í´Â ºÐ¸íÈ÷ Â÷ÀÌ°¡ ÀÖ´Ù. ´ÜÀÏÇÑ ¾²·¹ µå´Â ¸ÖƼ¾²·¹µå¸¦ ±¸ÇöÇϱâ À§ÇÑ Áß¿äÇÑ ±âº»ÀûÀÎ °´Ã¼ÀÌ´Ù. ´ÜÀÏ ÇÑ ¾²·¹µé´Â ¸ÖƼ¾²·¹µåÈ µÉ¶§ ¸Å¿ì Áß¿äÇÏ°Ô ´Ù·ç¾îÁø´Ù. ±×·³ ¿¹ Á¦¸¦ ÅëÇؼ, °ú¿¬ ¾²·¹µå°¡ ¹«¾ùÀÎÁö ¾Ë¾Æº¸µµ·ÏÇÏÀÚ. 1.3. ¸ÖƼ¾²·¹µå ù¹ø° ¿¹Á¦ - °ú°¨È÷ °í¹éÇÒ °ÍÀΰ¡ ¸»°ÍÀΰ¡ ? ù»ç¶ûÀÇ ±â¾ïÀº ¾Æ·ÃÇÏ´Ù. ´©±¸³ª ù»ç¶ûÀÇ ±â¾ïÀ» °£Á÷Çϸç Æò»ýÀ» ±×¸®¿öÇÒ °ÍÀÌ´Ù. »ç¶û¿¡ ´«ÀÌ ¶°Áø ¾î´À ³¯Àΰ¡ ¹«½ÉÄÚ Â¤ ¾îµç Àå¹Ì²É ²ÉÀÙÀ» Çϳª µÑ ¾¿ ¶â¾î³»¸ç, °ú¿¬ »ó´ë¹æµµ ¶ÇÇÑ ÀڽŠÀ» »ç¶ûÇϴ°¡¿¡ ´ëÇØ ²ÉÁ¡À» º¸±âµµ ÇÑ´Ù. ±×·¯¸é¼ ¶¸¶¸ÀÌ °í¹éÇÒ ¼ö ¾ø´Â ÀÚ½ÅÀÌ ¾È¾²·´°Ô »ý°¢Çϸç, ¿ë±â°¡ ¾ø´Â Àڽſ¡°Ô Àå¹Ì²ÉÀÙ À» ºô¾î ¿ë±â¸¦ ºÑµ¸¿ì·Á°í ÇÏÁö¸¸, °á°ú¾ß Ç×»ó ÀÚ½ÅÀÌ ¸¶À½¸Ô°í ÀÖ´øµ¥·Î µÇ´ø ¾²¶ó¸° ±â¾ïÀ»¡¦¡¦. ±×·¡¼ ¿ë±âÀÖ´Â ÀÚ°¡ ¹ÌÀÎÀ» ¾ò ´Â´Ù°í ÇÏÁö ¾Ê´ø°¡ ? ¸ÖƼ¾²·¹µå°¡ °ú¿¬ ¾î¶² °ÍÀΰ¡¸¦ »ìÆ캸±â À§ÇØ ¿©±â¼´Â ù»ç ¶ûÀ» °í¹éÇϱâ À§ÇÑ ¼ø¼öÇÔÀ¸·Î µ¹¾Æ°¡°íÀÚ ÇÑ´Ù. ÁغñµÈ ½Ã³ª¸®¿À ´Â ´ÙÀ½°ú °°´Ù. ù»ç¶ûÀ» °í¹éÇϱâ À§ÇÑ ÀÚ¹Ù ¸ÖƼ¾²·¹µå ¿¹Á¦ÀÇ ½Ã³ª¸®¿À Áغñ¹° : Àå¹Ì ÇѼÛÀÌ °¡ Á¤ : ´ç½ÅÀÌ »ç¶ûÇÏ´Â »ç¶÷µµ ´ç½ÅÀ» »ç¶ûÇϴ°¡¸¦ ²ÉÁ¡À» ÅëÇؼ È®ÀÎÇØ º»´Ù. ¨ç ù¹ø° ¾²·¹µå - ´ç½ÅÀ» »ç¶ûÇÑ´Ù. ´çÀå ´Þ·Á°¡ »ç ¶ûÀ» °í¹éÇÏÀÚ. ¨è µÎ¹ø° ¾²·¹µå - ´ç½ÅÀº Á»´õ ±â´Ù·Á¾ß ÇÑ´Ù. ¨é ¼¼¹ø° ¾²·¹µå - ´ç½ÅÀ» »ç¶ûÇÏÁö ¾Ê´Â´Ù. ÀÏÂġ Æ÷±âÇ϶ó Á¶ °Ç : ¨ç ²ÉÀÙÀº 30°³ À̸ç, ¨è °¢ ¾²·¹µå´Â µ¿½Ã¿¡ ½ÇÇàµÇ¸ç ¨é °¢ ¾²·¹µå´Â random() ¸Þ½îµå¿¡ ¹ß»ýµÈ °ª¸¸Å ¾² ·¹µå¸¦ ½¬°Ô ÇÑ´Ù. °á °ú : °¡Àå ¸¶Áö¸·¿¡ Ãâ·ÂµÈ ¾²·¹µåÀÇ °á°ú¸¦ µû¸¥´Ù. »ç¶ûÀº Âü´Â °ÍÀ̶ó°í ÇÏ´ø°¡ ? ÁغñµÈ ½Ã³ª¸®¿À°¡ ¸¾¿¡ ¾Èµå´Â ºÐµéµµ °è½Ã°ÚÁö¸¸, ¾Æ¹«Æ° ÀÌ ¸¸ÇÏ¸é ´ç½ÅÀÌ »ç¶ûÇÏ´Â »ç¶÷¿¡°Ô »ç¶ûÀ» °í¹éÇÏ´Â ¸ÖƼ¾²·¹µå ¿¹ Á¦·Î´Â ÃæºÐÇÒ °ÍÀÌ´Ù. ±×·³ ÀÌ ½Ã³ª¸®¿À¸¦ ÀÚ¹ÙŬ·¡½º·Î ±¸ÇöÇÑ ¿¹ Á¦¸¦ »ìÆ캸ÀÚ. ù¹ø° »ìÆ캼 ¿¹Á¦´Â Àå¹Ì²ÉÀ¸·Î ²ÉÁ¡À» º¸´Â Ŭ·¡½º¸¦ »ý¼ºÇØ ÁÖ´Â RoseThread.javaÀÌ´Ù. // RoseThread.java 01: import java.util.Date ; 02: 03: class RoseThread extends Thread { 04: 05: String Result="" ; 06: public RoseThread(String str) { 07: super(str) ; 08: } // end RoseThread() 09: 10: public void run() { 11: Date current= new Date() ; 12: for(int i=0;i<10;i++) { 13: System.out.println(i+" "+ getName() + " " + current.getSeconds() ) ; 14: try { 15: sleep( (int)(Math.random() * 1000)) ; 16: } catch (InterruptedException e) {} 17: } // end for 18: 19: Result = getName(); 20: System.out.println("¼±ÅÃ!! => "+ Result ) ; 21: } // end run() 22: 23: } // end all ù¹ø° RoseThread.java¸¦ ¼³¸íÇÏÀÚ¸é ´ÙÀ½°ú °°´Ù. ¨ç 1ÁÙÀÇ import ¹®ÀåÀº Date¶ó´Â Ŭ·¡½º¸¦ importÇϱâÀ§Çؼ »ç¿ëµÇ´Â °ÍÀº ´©±¸³ª ¾Ë°ÚÁö¸¸, ±× ¿ëµµ´Â 13ÁÙÀÇ current.getSecond()¿¡¼ ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â ¾²·¹µåÀÇ ÇöÀç ½Ã°¢À» ÃÊ´ÜÀ§·Î ¾Ë·ÁÁÖ±â À§ÇؼÀÌ´Ù. ±×·¡¾ß¸¸, ÁøÂ¥·Î ¸ÖƼ¾²·¹µå°¡ ¾î ¶² °ÍÀÎÁö¸¦ ¾Ë ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¨è 3ÁÙÀÇ extends Thread¸¦ ÁÖ¸ñÇÏÀÚ. RoseThread Ŭ·¡½º´Â ThreadŬ·¡½º·ÎºÎÅÍ È®ÀåµÈ(»ó¼Ó¹ÞÀº) Ŭ·¡½ºÀÌ´Ù. µû¶ó¼ Thread Ŭ·¡½ºÀÇ ÀνºÅº½ºº¯¼ö¿Í ¸Þ½îµå¸¦ ´Ù »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù. ¨é ¨ç¿¡¼ RoseThread°¡ Thread¿¡¼ »ó¼Ó¹Þ¾Ò´Ù°í ÇßÀ¸´Ï, ´ç ¿¬È÷ superŬ·¡½º´Â Thread°¡ µÉ °ÍÀÌ°í, 7¹ø° ÁÙÀÇ super(string) Àº ThreadŬ·¡½ºÀÇ ÄÁ½ºÆ®·°ÅÍ Thread(String str)À» È£ÃâÇÏ¿© Thread¸¦ »ý¼ºÇÏ´Â °ÍÀÌ µÈ´Ù. ¨ê 10¹ø° ÁÙÀÇ run()Àº ThreadÀÇ ½ÉÀåºÎ¶ó°í ÇÒ ¼ö ÀÖ´Â °÷ÀÎ µ¥, ÀÌ°÷¿¡¼ ¾²·¹µå¸¦ ÀÌ¿ëÇÑ ¸ðµç 󸮰¡ ÀÌ·ç¾îÁö´Â °÷ÀÌ´Ù. run()¸Þ½îµå´Â ThreadÀÇ run()¸Þ½îµå¿Í overrideµÇ¾î »ç¿ëµÈ´Ù. ¨ë 12¹ø° ÁÙºÎÅÍ 17¹ø° ÁÙ±îÁö´Â ½ÇÁ¦ ¾²·¹µå¸¦ ÀÌ¿ëÇÏ¿© ²É Á¡À» º¸´Â °÷Àε¥, °¢ ¾²·¹µåµéÀº for¹®ÀåÀÌ 10¹ø ¼öÇàÇÏ¸é¼ ²ÉÀÙ À» Çϳª¾¿ µû´Â ÀÛ¾÷À» ÇÑ´Ù. ±×¸®°í º¯´ö½º·´°Ôµµ ¹«ÀÛÀ§·Î ÃßÃâµÈ °ª¸¸Å °¢ ¾²·¹µå´Â Àá½Ã ÈÞ½ÄÀ» °®´Â´Ù. ¨ì 14¹ø° ÁÙºÎÅÍ 16¹ø° ÁÙ±îÁö´Â Ȥ½Ã¶óµµ ¹ß»ýÇÒ Áö ¸ð¸£´Â ¿¹¿Ü»óȲ¿¡ ´ëºñÇÏ´Â °ÍÀε¥, ÀÌ ºÎºÐÀº ´ÙÀ½ Àå¿¡¼ ÀÚ¼¼È÷ ´Ù·é ´Ù. ¨í 19¹ø° ÁÙÀº ¸¶Áö¸·¿¡ ¶â¾îÁø ²ÉÀÙÀÇ ¾²·¹µåÀÇ À̸§À» ¾ò±â À§ÇÑ ¹®ÀåÀÌ´Ù. getName()Àº Thread Ŭ·¡½ºÀÇ ¸Þ½îµå·Î ThreadÀÇ À̸§À» String °ªÀ¸·Î ¸®ÅÏÇØÁØ´Ù. ÀÌ ºÎºÐÀÇ °á°ú´Â ¿©·¯ºÐÀÌ »ó»ó ÇÏ´Â °Í°ú´Â ´Ù¸¥ °á°ú°¡ ³ª¿Ã °ÍÀε¥, ±â´ëÇغ¸½Ã¶ó. ¨î 20¹ø° ÁÙÀº ¸¶Áö¸· °á°ú¸¦ Ãâ·ÂÇÏ´Â ÁÙÀÌ´Ù. À̷νá RoseThread Ŭ·¡½ºÀÇ µ¿ÀÛÀº ¿Ï°áµÇ´Â °ÍÀÌ´Ù. µÎ¹ø° ¿¹Á¦´Â ²ÉÁ¡À» º¸±â À§ÇØ RoseThread Ŭ·¡½ºÀÇ ¾²·¹µå ¸¦ È£ÃâÇÏ¿© »ç¿ëÇÏ´Â main() ¸Þ½îµå°¡ µé¾îÀÖ°í ½ÇÁ¦ ½ÇÇàµÇ´Â LoveThread.javaÀÌ´Ù. 01: class LoveThread { 02: public static void main (String args[]) { 03: new RoseThread("»ç¶ûÇÑ´Ù").start() ; 04: new RoseThread("±â´Ù¸°´Ù").start() ; 05: new RoseThread("Æ÷±âÇÑ´Ù").start() ; 06: } 07: } ¨ç 1¹ø° ÁÙÀº ¿ì¸®°¡ ²ÉÁ¡À» ½ÃÀÛÇϱâ À§ÇÑ LoveThread Ŭ·¡ ½º¸¦ ¼±¾ðÇÏ´Â ºÎºÐÀÌ´Ù. ¨è 2¹ø° ÁÙÀº ¾Õ¿¡ 3Àå¿¡¼ ÇÁ·Î±×·¥ÀÇ ±¸Á¶¿¡¼ ´Ù·ç¾úµíÀÌ ½© ÇÁ·ÒÇÁÆ® »ó¿¡¼ ½ÇÇà°¡´ÉÇÑ main() ¸Þ½îµå¸¦ ¸¸µå´Â ºÎºÐÀÌ´Ù. ¨é 3¹ø° ÁÙºÎÅÍ 5¹ø° ÁÙ±îÁö´Â °¢°¢ "»ç¶ûÇÑ´Ù", "±â´Ù¸°´Ù", " Æ÷±âÇÑ´Ù" À̶ó´Â À̸§À» °¡Áö´Â RoseThreadÀÇ °´Ã¼¸¦ ¸¸µé°í, °¢ ±â °´Ã¼ÀÇ start() ¸Þ½îµå¸¦ ÀÌ¿ëÇØ °¢±â ÁÖ¾îÁø ¾²·¹µå¸¦ µ¿ÀÛ½ÃÅ° ´Â ¹®ÀåµéÀÌ´Ù. ¨ê ¾ÕÀÇ RoseThread.java ºÐ¼®À» À¯½ÉÈ÷ »ìÆ캻 »ç¶÷Àº ±× ¾È¿¡ start() ¸Þ½îµå°¡ ¾ø´Ù´Â °ÍÀ» ´«Ä¡Ã«À» °ÍÀÌ´Ù. ±×·³ ´ç¿¬È÷ ¿¡·¯°¡ ³ª¾ß ÇÔ¿¡µµ ºÒ±¸ÇÏ°í, ¿¡·¯°¡ ¹ß»ýÇÏÁö ¾Ê´À´Ù. ¿Ö³Ä¸é ½´ÆÛŬ·¡½º ÀÎ Thread Ŭ·¡½ºÀÇ start()¸Þ½îµå´Â this ThreadÀÇ run() ¸Þ½îµå¸¦ È£ÃâÇϱâ·Î µÇ¾î Àֱ⠶§¹®ÀÌ´Ù. ÀÚ ÀÌ·¸°Ô ¿¹Á¦¸¦ ºÐ¼®ÇØ º¸¾ÒÀ¸´Ï, ½ÇÇà½ÃÄÑ¾ß ÇÒÅÙµ¥, ´Ùµé ¾Æ ½Ã°ÚÁö¸¸, ´Ù½Ã Çѹø ÄÄÆÄÀÏÇÏ´Â ¹æ¹ý°ú ½ÇÇà¹æ¹ýÀ» Àû¾î º¸¸é ´ÙÀ½ °ú °°´Ù. ¨ç javac RoseClass.java ¨è javac LoveClass.java ¨é java LoveClass ±×·¯¸é ±×³¯ ±×³¯ÀÇ ¿î¼¼¿¡ µû¶ó ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿Ã °ÍÀÌ ´Ù. ÇÊÀÚ´Â ³«°üÀûÀ¸·Î ¼¼»óÀ» »ì¾Æ°¡±â ¶§¹®¿¡ "»ç¶ûÇÑ´Ù" ¾²·¹µå °¡ Á¦ÀÏ ¸¶Áö¸·¿¡ ³ª¿Â °ÍÀ» Ãâ·Â¿¹Á¦·Î ½Æ´Â´Ù. 0 ±â´Ù¸°´Ù 28 0 »ç¶ûÇÑ´Ù 28 0 Æ÷±âÇÑ´Ù 28 1 Æ÷±âÇÑ´Ù 28 1 »ç¶ûÇÑ´Ù 28 2 »ç¶ûÇÑ´Ù 28 1 ±â´Ù¸°´Ù 28 2 ±â´Ù¸°´Ù 28 2 Æ÷±âÇÑ´Ù 28 3 ±â´Ù¸°´Ù 28 4 ±â´Ù¸°´Ù 28 5 ±â´Ù¸°´Ù 28 3 »ç¶ûÇÑ´Ù 28 6 ±â´Ù¸°´Ù 28 7 ±â´Ù¸°´Ù 28 3 Æ÷±âÇÑ´Ù 28 8 ±â´Ù¸°´Ù 28 4 Æ÷±âÇÑ´Ù 28 5 Æ÷±âÇÑ´Ù 28 4 »ç¶ûÇÑ´Ù 28 9 ±â´Ù¸°´Ù 28 6 Æ÷±âÇÑ´Ù 28 ¼±Åà !! => ±â´Ù¸°´Ù 5 »ç¶ûÇÑ´Ù 28 7 Æ÷±âÇÑ´Ù 28 6 »ç¶ûÇÑ´Ù 28 7 »ç¶ûÇÑ´Ù 28 8 Æ÷±âÇÑ´Ù 28 8 »ç¶ûÇÑ´Ù 28 9 Æ÷±âÇÑ´Ù 28 ¼±Åà !! => Æ÷±âÇÑ´Ù 9 »ç¶ûÇÑ´Ù 28 ¼±Åà !! => »ç¶ûÇÑ´Ù À§¿¡ º¸ÀÌ´Â Ãâ·Â°á°ú´Â ´ÙÀ½°ú °°´Ù. ù¹ø° Ä®·³ÀÇ ¼ýÀÚ´Â ¸î¹ø° Àå¹Ì²ÉÀ» ¶â¾î³Â´Â°¡¸¦ °¡¸®Å°´Â ¼ýÀÚÀÌ´Ù. µÎ¹ø° Ä®·³ÀÇ ¹®ÀÚ¿Àº ¾Õ¿¡¼ LoveThread Ŭ·¡½º¿¡¼ »ý¼ºÇÑ RoseThreadÀÇ ¾²·¹µå °´Ã¼ÀÇ À̸§µéÀÌ´Ù. ±×¸®°í ¼¼¹ø° Ä® ·³Àº ÇöÀç ÀÛµ¿ÁßÀÎ ÀÛ¾÷ÀÇ ½Ã°¢ÀÇ ÃÊ(Second)¸¦ ±¸ÇØ Ãâ·ÂÇÑ °ÍÀÌ ´Ù. ´ÙÀ½°ú °°Àº ¸î°¡Áö Àǹ®Á¡ÀÌ »ý°åÀ» °ÍÀÌ´Ù. ¨ç ½ÃÀÛÀº ºÐ¸íÈ÷ »ç¶ûÇÑ´Ù, ±â´Ù¸°´Ù, Æ÷±âÇÑ´Ù ¼ø¼´ë·Î ÇÏ°Ô Çߴµ¥, óÀ½ °á°úºÎÅÍ°¡ ±×·¸Ä¡ ¸øÇÏ´Ù. ¨è ȸ鿡 Ãâ·ÂµÈ °á°ú´Â 1ÃÊ ÀÌ»ó ¼Ò¿äµÇ´Âµ¥ ¾î¶»°Ô °°Àº 28 Ãʸ¸ Ãâ·ÂµÇ´Â°¡ ? ¨é °°ÀÌ ½ÃÀÛÇÑ ÀÛ¾÷Àε¥, ¾î¶² ÀÛ¾÷Àº ÀÏÂï ³¡³ª°í, ³ªÁß¿¡ ³¡ ³ª°í ÇÒ ¼ö Àִ°¡ ? ¨ê ¾î¶² ¾²·¹µå´Â °è¼ÓÇؼ Àå¹Ì²ÉÀÙÀ» ¶â¾î³»°í ¾î¶² ¾²·¹µå´Â ÇÑÂüÈÄ¿¡¾ß Àå¹Ì²ÉÀÙÀ» ¶â¾î ³¾ ¼ö Àִ°¡ ? ¨ë ¾ÕÀÇ ¼Ò½º¿¡¼´Â ºÐ¸íÈ÷ ¸¶Áö¸·¿¡ ³¡³ª´Â ¾²·¹µå¸¸ "¼±ÅÃ" ¸¦ Ãâ·ÂÇÒ °Í·Î ¿¹»óÇߴµ¥, ¼¼°³ÀÇ ¾²·¹µå¸¶´Ù "¼±ÅÃ"À» Ãâ·ÂÇß´Ù. ÀÌ·± Á¤µµÀÇ Àǹ®Àº ´©±¸³ª ´Ù °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ±âÁ¸ÀÇ ¿¬ ¼ÓÀûÀÎ(Sequential) ÇÁ·Î±×·¥ ±¸Á¶·Î´Â »ó»óÇÒ ¼ö ¾ø´Â ÀÏÀÌ °£´ÜÇÏ °Ô ±¸ÇöµÇ¾ú±â ¶§¹®¿¡ ´õ¿í ´õ ÀÌ»óÇÒ °ÍÀÌ´Ù. ¹°·Ð ÀÚ¹Ù¸¦ ÅëÇØ Ã³ À½ ÇÁ·Î±×·¥À» ÇÏ´Â »ç¶÷Àº ±×³É ±×·² ¼öµµ ÀÖ°Ú±¸³ª ÇÏ°ÚÁö¸¸ ! ÀÌÁ¦ ¾²·¹µå Ŭ·¡½ºÀÇ Æ¯¼º°ú ¸Þ½îµå¸¦ »ìÆ캽À¸·Î½á ÀÌ·± Áú¹® ¿¡ ´äÇغ¸µµ·Ï ÇÏÀÚ. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ÀÌ ±ÛÀº ÇÊÀÚ¿ÍÀÇ µ¿ÀÇ ¾øÀÌ »ó¾÷ÀûÀ¸·Î ¦¢ ¦¢ ¦¢ ¦¢¸®Æ÷½ºÆõǰųª ÀÌ¿ëµÉ ¼ö ¾ø½À´Ï´Ù. ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ½Å¼¼´ë ¾ð¾î, ÀÚ¹Ù Àü¹®°¡¸¦ ²Þ²Ù´Â ÀáÅÊÀÌ 3Àιæ, ½ÅÁ¤È£, Á¦°¥¿µ, Á¶±¹ |