Internet °ü·Ã ÀÚ·á |
---|
Á¦¸ñ | [Java] ¾²·¹µå #2 1998/12/03 (17:32) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 57 |
Á¶È¸ | 992 |
º»¹® |
1.4. ¾²·¹µåÀÇ Æ¯¼º°ú ¸Þ½îµå 1.4.1. ¾²·¹µå ¸öü (Thread Body) ¾²·¹µå´Â run()¸Þ½îµå°¡ ÀÖ¾î¾ß µ¿ÀÛÇÑ´Ù. µû¶ó¼ ¾²·¹µå ¸öü´Â run() ¸Þ½îµå¶ó ÇÒ ¼ö ÀÖÀ¸¸ç run()¸Þ½îµå´Â ¾²·¹µåÀÇ ½ÉÀåºÎ¶ó ÇÒ ¼ö ÀÖ´Ù. ¾²·¹µå°¡ »ý¼ºµÇ°í ÃʱâÈµÇ°í ³ª¸é, ·±Å¸ÀÓ ½Ã½ºÅÛÀº ¾² ·¹µåÀÇ run()¸Þ½îµå¸¦ È£ÃâÇÑ´Ù. ¾²·¹µå´Â À§ÀÇ ¿¹Á¦Ã³·³ for, while µîÀÇ ¹Ýº¹±¸Á¶¸¦ °¡Áú ¼ö ÀÖÀ¸¸ç, ¸¸¾à ftpµîÀ» ±¸ÇöÇÑ °æ¿ì¶ó¸é ¿À ·£ ½Ã°£µ¿¾È Áö¼ÓÀûÀ¸·Î µ¿ÀÛÇÏ°Ô µÈ´Ù. ¾²·¹µå´Â ÀÚ¹Ù°¡ ´ÜÀÏÇÑ È® Àå(»ó¼Ó)¹Û¿¡ ÇÒ ¼ö ¾ø±â ¶§¹®¿¡ µÎ°¡Áö ¹æ¹ýÀ¸·Î ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ƯÈ÷ ¾ÖÇø´À» ¸¸µç °æ¿ì´Â »ó¼ÓÀ» "extends java.applet.Applet"À¸·Î ÇؾßÇϱ⠶§¹®¿¡ Thread¸¦ »ó¼ÓÇÒ ¼ö ¾ø´Ù. µû¶ó¼ ÀÌ·± °æ¿ì¿¡´Â implement RunnablÀ» »ç¿ëÇÏ¿© ±¸ÇöÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ ´ÙÀ½°ú °° Àº µÎ°¡Áö ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù. ¨ç Thread Ŭ·¡½ºÀÇ ¼ºêŬ·¡½º¸¦ ¸¸µé¾î ThreadÀÇ run() ¸Þ½î µå¸¦ overrideÇÏ´Â °æ¿ì. ÀÌ·± ¹æ¹ýÀº ¾Õ¿¡¼ RoseThread.java¿¡¼ »ç¿ëÇÑ ¹æ¹ýÀÌ´Ù. ¨è Runnable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½º¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. Runnable ÀÎÅÍÆäÀ̽º´Â java.langÀÇ ÆÐÅ°Áö¿¡ Æ÷ÇԵǾî ÀÖ´Ù. ÀÌ °æ ¿ì, ¾²·¹µå¸¦ ÀνºÅº½ºÈÇÏ°Ô µÇ¸é, »õ·Î¿î ¾²·¹µå ÇÚµéÀ» ¸¸µç Runnable Ŭ·¡½ºÀÇ ÀνºÅº½º¿¡ ³Ñ°ÜÁÖ°Ô µÈ´Ù. ÀÌ·± Runnable °´Ã¼ ´Â run()¸Þ½îµå¸¦ ¾²·¹µå¿¡°Ô Á¦°øÇÑ´Ù. ÀÌ·± ¹æ¹ýÀ» ÅëÇØ ¾ÖÇø´À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀº ¾Æ³¯·Î±× ½Ã°è ¿¹Á¦¿¡¼ ÀÚ¼¼ÇÏ°Ô ´Ù·ê °ÍÀÌ´Ù. ¨é Åë»óÀûÀÎ ÀÌ¿ë(Rule of Tumb) : ÀÚ¹Ù¹®¼¿¡¼´Â ¸¸¾à ¾î¶² Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ°Ô µÈ´Ù¸é, µÎ¹ø° °æ¿ìÀÎ RunnableÀ» »ç¿ë ÇÒ °ÍÀ» ±Ç°íÇÏ°í ÀÖ´Ù. ¹°·Ð ÇöÀç ³ª¿ÍÀÖ´Â ´ëºÎºÐÀÇ ¾ÖÇø´µéÀº µÎ¹ø° °æ¿ì¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. 1.4.2. ¾²·¹µå »óÅÂ(Thread State) ¸ðµç °´Ã¼°¡ ±×·¯ÇϵíÀÌ ¾²·¹µåµµ ÇϳªÀÇ °´Ã¼À̱⠶§¹®¿¡ »ý¼º (new)À¸·Î ½ÃÀÛÇÏ¿© »ç¸ê(Dead)ÇÏ´Â °úÁ¤À» °Þ´Â´Ù. »ý¼ºÇÏ¿© »ç¸ê Çϱâ±îÁö ÇÁ·Î±×·¥µÈµ¥·Î ¿©·¯°¡Áö »óÅ·Π¿Å°Ü´Ù´Ï°Ô µÈ´Ù. ¾²·¹ µåÀÇ »óź¯È¸¦ ´ÙÀ̾î±×·¥À¸·Î Ç¥ÇöÇÏ¸é ´ÙÀ½°ú °°´Ù. (±×¸²À» ³Ö À» ¼ö°¡ ¾ø¾î¼ Âü!! Èûµé±º¿ä) À§¿¡¼ º¸À̵íÀÌ ¾²·¹µå´Â ¢Á»ý¼º(new) ¢Á½ÃÀÛ(start) ¢Á½ÇÇà (run) ¢Á¸ØÃã(stop, exit) ¢Á»ç¸ê(Dead) ¢ÁÈÞ½Ä(Not Runnable)µîÀÇ »óŸ¦ ¿Å°Ü´Ù´Ï¸ç ÁÖ¾îÁø ¿ªÇÒÀ» ÇÏ°í »ç¶óÁö°Ô µÈ´Ù. °¢°¢ÀÇ »óÅ ¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. ¨ç New Thread - ¾²·¹µå¸¦ »ý¼ºÇÑ´Ù. »õ·Î¿î ¾²·¹µå¸¦ »ý¼ºÇÑ´Ù. ±×·¯³ª »ý¼º¸¸ ÇÒ »Ó ¾ÆÁ÷ ½ÃÀÛµÇÁö ¾ÊÀºÃ¼·Î ³²¾Æ ÀÖ´Ù. ÀÌ »óÅ¿¡¼´Â µÎ°¡Áö °æ¿ì°¡ Á¸ÀçÇÑ´Ù. Áï »ý ¼ºµÈ ¾²·¹µå¸¦ ½ÃÀÛÇϰųª, ¸ØÃß°Ô ÇÏ´Â °ÍÀÌ´Ù. ¡Ý start()´Â »ý¼ºµÈ ¾²·¹µå¸¦ ½ÃÀÛÇÏ°Ô ÇÑ´Ù. ¾²·¹µå Ŭ·¡½º¿¡¼ start()´Â run()À» È£ÃâÇÏ°Ô µÇ¾îÀÖ´Ù. µû¶ó¼ »ý¼ºµÈ ¾²·¹µå°¡ µ¿ÀÛ ÇÏ°Ô ÇØÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¡Ý stop()Àº »ý¼ºµÈ ¾²·¹µå¸¦ ¸ØÃß°Ô ÇÑ´Ù. ¨è Runnable - ½ÇÇà°¡´ÉÇÑ ¾²·¹µå ÀÌ »óÅ´ ½ÇÇà°¡´ÉÇÑ ¾²·¹µå¸¦ ¸¸µå´Â °ÍÀÌ´Ù. Runnable »óÅ ·Î ¿À±â À§Çؼ´Â ¾²·¹µå °´Ã¼¸¦ ½ÇÇà½ÃÄÑ¾ß Çϴµ¥, ±×·¸°Ô Çϱâ À§Çؼ´Â ¾²·¹µå °´Ã¼ÀÇ run()À» È£ÃâÇØ¾ß ÇÑ´Ù. À§¿¡¼µµ »ìÆ캸¾Ò µíÀÌ start()¸¦ È£ÃâÇϸé run()À» È£ÃâÇÑ´Ù. Runnable»óÅ´ "Running"À¸·Î °£´ÜÇÏ°Ô »ý°¢ÇÏ¸é µÇ´Âµ¥, ÇöÀç Runnable »óÅ¿¡ ¿Í ÀÖ´Ù¸é, run() ¸Þ½îµå°¡ ¿¬¼ÓÀûÀ¸·Î µ¿ÀÛÇÏ°í ÀÖ´Â ÁßÀÌ´Ù. ¨é Not Runnable ¸î°¡Áö À̺¥Æ®°¡ ¹ß»ýÇÏ¸é ¾²·¹µå°¡ Not Runnable »óÅ·Πµé ¾î°¡µ¥ µÇ´Âµ¥, ±×·± À̺¥Æ®¸¦ ¹ß»ý½ÃÅ°´Â ¸Þ½îµå´Â ´ÙÀ½°ú °°´Ù. ¢Á suspend() ¸Þ½îµå°¡ È£ÃâµÇ¾úÀ» ¶§ - ÀÌ ¸Þ½îµå°¡ È£ÃâµÇ¸é, this ThreadÀÇ ½ÇÇàÀÌ º¸·ùµÈ´Ù.(Àý´ë Á×´Â °ÍÀÌ ¾Æ´Ô) Çѹø º¸·ùµÈ ¾²·¹µå´Â resume()¿¡ ÀÇÇØ µ¿ÀÛÀ» Àç°³ÇÒ ¼ö ÀÖ´Ù. ¢Á sleep() ¸Þ½îµå°¡ È£ÃâµÇ¾úÀ» ¶§ - ÁöÁ¤µÈ ½Ã°£¸¸Å this ¾² ·¹µåÀÇ ½ÇÇàÀ» ½¬°Ô ÇÑ´Ù. ¾ÕÀÇ RoseThread.java ¿¹Á¦ÀÇ 15¹ø°ÁÙÀº ¹«ÀÛÀ§·Î ÃßÃâµÈ °ª¸¸Å ¾²·¹µå¸¦ ½¬°Ô ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¢Á ¾²·¹µå°¡ wait() ¸Þ½îµå¸¦ »ç¿ëÇÒ ¶§ - java.lang.ObjectÀÇ ¸Þ ½îµå·Î½á, ÁöÁ¤µÈ ½Ã°£¸¸Å ¾²·¹µå¸¦ ´ë±âÇÏ°Ô ¸¸µç´Ù. ¸¸¾à wait() ¸¦ ¸Å°³º¯¼ö¾øÀÌ »ç¿ëÇÏ¸é °è¼ÓÇؼ ´ë±âÇÏ°Ô µÈ´Ù. ´ë±âÇÏ°í ¾²·¹ µå¸¦ ´Ù½Ã µ¿ÀÛÇÏ°Ô ¸¸µé·Á¸é, ¿ª½Ã java.lang.ObjectÀÇ ¸Þ½îµåÀÎ notify() ³»Áö´Â notifyAll()À» »ç¿ëÇÏ¿© Á¶°ÇÀÌ º¯ÇßÀ½À» Å뺸¹Þ¾Æ¾ß ÇÑ´Ù. ¢Á ¾²·¹µå°¡ ÀÔÃâ·Â¿¡ ÀÇÇØ ¸·ÇôÀÖÀ» ¶§ - ÇöÀç µ¿ÀÛÁßÀÎ ÀÔÃâ ·ÂÀÌ ¿ÏÀüÈ÷ Á¾·áÇÒ ¶§±îÁö ±â´Ù¸®´Ù°¡, ÀÔÃâ·ÂÀÌ Á¾·áµÇ¸é ¾²·¹µå °¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ°Ô µÈ´Ù. ¨ê Dead - ¼Ò¸ê ¾²·¹µå´Â µÎ°¡Áö ¹æ¹ýÀ¸·Î ¼Ò¸êÇÏ°Ô µÈ´Ù. Çϳª´Â Á¤»óÀûÀÎ Á¾ ·á¸¦ ÅëÇؼÀÌ°í, ´Ù¸¥ Çϳª´Â °Á¦ÀûÀ¸·Î Á¾·áµÇ´Â °ÍÀÌ´Ù. ¢Á Á¤»óÀûÀÎ ¼Ò¸ê Á¤»óÀûÀ¸·Î ¼Ò¸êÇÏ´Â °ÍÀº ¾²·¹µåÀÇ ½ÉÀåÀÎ run()ÀÌ ¾Æ¹«·± Å» ¾øÀÌ Á¾·áÇÏ´Â °æ¿ìÀÌ´Ù. ¾Õ¿¡¼µµ À̾߱âÇßµíÀÌ ¾²·¹µå´Â run()¿¡ ÀÇÇؼ µ¿ÀÛÇÒ Á¤µµ·Î run()Àº ¾²·¹µåÀÇ ½ÉÀåÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸ÀÚ public void run() { int i = 0 ; while (i<100) { i++ ; System.out.println("i = " + i ) ; } // end while }// end run() À§ÀÇ ¿¹Á¦´Â ¾²·¹µå¸¦ µ¿ÀÛ½ÃÅ°´Â run() ¸Þ½îµåÀÌ´Ù. À̹ø run() ¸Þ½îµå´Â 0ºÎÅÍ 99±îÁö ¼ö¸¦ Ãâ·ÂÇÏ°í i°ªÀÌ 100ÀÌ µÇ¸é ÀÚ¿¬½º·´°Ô Á¾·áÇÏ°Ô µÈ´Ù. µû¶ó¼ ¾²·¹µåµµ Á¾·áÇÏ°Ô µÇ´Â °ÍÀÌ´Ù. ¢Á °Á¦ÀûÀÎ Á¾·á °Á¦ÀûÀÎ Á¾·á´Â ¾²·¹µå¸¦ Thread Ŭ·¡½º¿¡ Á¤ÀǵǾî ÀÖ´Â stop() ¸Þ½îµå¸¦ »ç¿ëÇÏ¿© Á¤Áö½ÃÄÑ »ç¸ê½ÃÅ°´Â °ÍÀÌ´Ù. °Á¦ÀûÀÎ Á¾ ·á¸¦ ÇÔÀ¸·Î½á ¾ò¾îÁö´Â ÀÌÀÍÀº ¾î¶² ƯÁ¤ÇÑ Á¶°ÇÀÌ ¹ß»ýÇÏ¸é ¾²·¹ µå¸¦ ¾ðÁ¦µçÁö Á¾·á½Ãų ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸ÀÚ Thread my = new Thread() ; my.start() ; try { Thread.currentThread().sleep(1000) ; } catch(InterruptedException e) {} my.stop() ; ÀÌ ¿¹Á¦¿¡´Â ¾Õ¿¡¼ »ìÆì º¸¾Ò´ø start()°¡ µîÀåÇÏ°í, currentThread()°¡ »õ·ÎÀÌ µîÀåÇÑ´Ù. ¡Ý start()´Â run()À» È£ÃâÇÏ¿© ¾²·¹µå¸¦ µ¿ÀÛ½ÃŲ´Ù. ¡Ý currentThread()´Â ÇöÀç µ¿ÀÛÁßÀÎ ¾²·¹µå¸¦ ¸®ÅÏÇÑ´Ù. Thread.currentThread().sleep(1000)ÀÇ Àǹ̸¦ »ìÆ캸¸é Thread Ŭ·¡ ½ºÀÇ currentThread()¸¦ ÅëÇØ ÇöÀç µ¿ÀÛÁßÀÎ ¾²·¹µå¸¦ ¾ò¾î¿À°í, ¾ò ¾î¿Â ¾²·¹µå¸¦ °´Ã¼·Î ÇÏ¿© ±× °´Ã¼ÀÇ sleep(1000)¸¦ ÅëÇØ 1ÃÊ (1000milsec)µ¿¾È Àá½Ã ½¬°Ô ÇÑ´Ù. ¡Ý try catch ¹®ÀåÀº ¾ÆÁ÷ ¿ì¸®°¡ ´Ù·ç´Â ³»¿ëÀÌ ¾Æ´Ï°í µÚÀÇ ¸îÀå¿¡¼ ´Ù·é´Ù. ¡Ý ¸¶Áö¸·À¸·Î stop()À» ÅëÇØ Ã³À½¿¡ »ý¼ºÇß´ø my ¾²·¹µå¸¦ ° Á¦ÀûÀ¸·Î Á¾·á½ÃŲ´Ù. ¨ë isAlive()´Â Thread Ŭ·¡½º¿¡ Æ÷ÇԵǾî ÀÖ´Â ¸Þ½îµå·Î½á ¾² ·¹µå°¡ È°¼ºÈµÇ¾î ÀÖ´Ù¸é true¸¦ ¾Æ´Ï¸é false¸¦ ¸®ÅÏÇÏ´Â boolean Çü ¸Þ½îµåÀÌ´Ù. µû¶ó¼ ƯÁ¤ ¾²·¹µå°¡ RunnableÀÎÁö¸¦ È®ÀÎÇϱâ À§ Çؼ´Â isAlive()¸¦ »ç¿ëÇÏ¸é µÈ´Ù. 1.4.3. ¾²·¹µå ¿ì¼±¼øÀ§(Thread Priority) °¡º¿î °¨±â³ª ¸ö»ìÁ¤µµ·Î ´ëÇü º´¿ø¿¡ ã¾Æ°¡ ÁøÂûÀ» ¹ÞÀ¸·Á°í ÇÏ¸é ¸î½Ã°£ µ¿¾È ±â´Ù·Á¾ß¸¸ ÇÑ´Ù. ±×·¯³ª ±³Åë»ç°í³ª È»óµîÀÇ È¯ ÀÚ´Â »¡°£ºÒÀÌ ÄÑÁö°í º´¿ø°ü°èÀÚµéÀÌ ¹Ù»ß ¶Ù¾î´Ù´Ï¸é À绡¸® ÀÀ ±ÞÄ¡·áºÎÅÍ ÇÊ¿äÇÏ´Ù¸é ¼ö¼ú±îÁö µé¾î°¥ ¼ö °¡ ÀÖ´Ù. ÀÌ°ÍÀº °áÄÚ ºÒ°øÆòÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ÀÌ°ÍÀº »ç¶÷ÀÇ ¸ñ¼ûÀ» »ì¸®±â À§ÇÑ ¿ì¼±¼øÀ§ ¿¡ µû¸¥ °ÍÀÌ´Ù. °¡º¿î °¨±âº¸´Ù´Â ±³Åë»ç°í¿¡ ÀÇÇÑ ÁßȯÀÚ°¡ ¸ÕÀú Ä¡·á¹Þ´Â °ÍÀº ÁßȯÀÚÀÇ ¿ì¼±¼øÀ§(Priority)°¡ ³ô´Ù°í À̾߱â ÇÑ´Ù. ¾²·¹µå¿¡µµ ¿ì¼±¼øÀ§°¡ ÀÖ´Ù. °¢±â °°Àº ¿ì¼±¼øÀ§·Î ½ÇÇàµÈ´Ù¸é, ÇϳªÀÇ ÇÁ·Î¼¼½º¸¦ ÀÛ¾÷ÀÇ °æÁß¿¡ »ó°ü¾øÀÌ ³ª´©¾îÁÖ´Â °ÍÀÌ µÇ¾î ¹ö¸°´Ù. ¸¸¾à Áß¿äÇÑ ¾²·¹µå°¡ ³·Àº ¿ì¼± ¼øÀ§¸¦ °¡Áö°í ÀÖ°í, õõ È÷ Çصµ µÇ´Â ¾²·¹µå°¡ ³ôÀº ¿ì¼±¼øÀ§¸¦ °¡Áö°í ÀÖ´Ù¸é, ¾Æ¸¶ Áß¿ä ÇÑ ÀÏÀ» ³¡³ª±â¸¦ ÇÑÂüÀ» ±â´Ù·Á¾ß ÇÒ °ÍÀÌ´Ù. µû¶ó¼ ÀÚ¹Ù¿¡¼´Â ¿ì¼±¼øÀ§¸¦ ÃÖ¼Ò°ª 1ºÎÅÍ ÃÖ´ë°ª 10±îÁö, Á¤»óÀûÀÎ ¿ì¼±¼øÀ§ °ªÀÎ 5 ¸¦ Thread Ŭ·¡½º Á¤ÀÇ¿¡ °¡Áö°í ÀÖ´Ù. ¢Á ¿ì¼±¼øÀ§¿¡ °ü°èµÈ ¸Þ½îµåµéÀº ´ÙÀ½°ú °°´Ù. ¡Ý setPriority(int ) - ¾²·¹µåÀÇ ¿ì¼±¼øÀ§¸¦ ¸Å°³º¯¼ö·Î Á¤ÇÑ´Ù. ¿ì¼±¼øÀ§°¡ ÃÖ¼Ò°ª°ú ÃÖ´ë°ªÀ» ¹þ¾î³ª¸é IllegalArgumentException ÀÌ ¹ß»ýÇÑ´Ù. ¡Ý getPriority() - ¾²·¹µåÀÇ ¿ì¼±¼øÀ§¸¦ ¾ò¾î¼ Á¤¼ö°ªÀ¸·Î ¸® ÅÏÇÑ´Ù. ¢Á ¿ì¼±¼øÀ§¿¡ °ü°èµÈ °ªµéÀº ´ÙÀ½°ú °°´Ù. ¡Ý MIN_PRIORITY = 1 : ¾²·¹µå°¡ °¡Áú¼ö ÀÖ´Â ÃÖ¼Ò ¿ì¼±¼øÀ§ ¡Ý MAX_PRIORITY = 10 : ¾²·¹µå°¡ °¡Áú¼ö ÀÖ´Â ÃÖ´ë ¿ì¼±¼ø À§ ¡Ý NORM_PRIORITY = 5 : ¾²·¹µå°¡ °¡Áö´Â Á¤»óÀûÀÎ ¿ì¼±¼ø À§ 1.4.4. µ¥¸ó ¾²·¹µå(Daemon Thread) µ¥¸ó(Daemon) : ÇÁ·Î±×·¥¿¡¼ ±âµ¿Á¶°ÇÀÌ ÃæÁ·µÇ¾úÀ» ¶§¿¡ ÀÛµ¿Çϱ⠽ÃÀÛÇÏ´Â ÀýÂ÷, ÀϹÝÀûÀÎ ÇÁ·Î±×·¥¿¡¼´Â ±âµ¿Á¶°ÇÀÌ µ¥¸ó ÀÚü¿¡ ÁöÁ¤µÇ¾î ÀÖ¾î¼, µ¥¸óÀÌ ½º½º·Î ±âµ¿Á¶°ÇÀ» ÆÇ´Ü ÇÑ´Ù. µµ½º¿¡¼ ·¥»óÁÖÇÁ·Î±×·¥À̳ª ¹ÙÀÌ·¯½ºµîÀÌ ÀÌ¿¡ ¼ÓÇÑ´Ù °í ÇÒ ¼ö ÀÖ´Ù. Âü°í : À¯´Ð½º¿¡¼ µ¥¸ó À¯´Ð½º¿¡¼´Â »ý°¢º¸´Ù ¸¹Àº µ¥¸óÀÌ »ç¿ëµÈ´Ù. ÇÁ¸°Æ®, Åë½Å, ±âŸµîµî. ½ÇÇàµÇ°í ÀÖ´Â ÇÁ·Î¼¼½º°¡ µ¥¸óÀÎÁö ¾Æ´ÑÁö´Â ±× ½Ç ÇàÈÀÏÀÇ À̸§ÀÌ d·Î ³¡³ª´Â°¡¸¦ È®ÀÎÇÏ¸é °ÅÀÇ µé¾î ¸Â´Â´Ù. °¢°¢ÀÇ µ¥¸óÀÇ À̸§°ú ¿ªÇÒ¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. inetd : ÀÌ°ÍÀÌ ±âµ¿µÇ¾î¾ß Åë½ÅÀÌ °¡´ÉÇÔ. telnetd : LocalÀ» telnet À¸·Î Á¢¼ÓÇÒ ¼ö ÀÖ°Ô ÇØÁÜ ftpd : Local System À» ftp·Î ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÜ httpd : Local System¿¡¼ http ¼¹ö ¿ªÇÒÀ» Çϸç Ŭ¶óÀ̾ð Æ®°¡ http ÇÁ·ÎÅäÄÝ·Î Á¢¼ÓÇÏ¿© ¼ºñ½º¸¦ ¿ä±¸ÇÏ¸é ¼ºñ½º¸¦ Á¦ °øÇÔ ÀÚ¹Ù¾²·¹µå´Â µ¥¸ó¾²·¹µå°¡ µÉ ¼ö ÀÖ´Ù. µ¥¸ó ¾²·¹µå´Â °°Àº ÇÁ ·Î¼¼½º¾È¿¡¼ µ¿ÀÛÁßÀÎ ´Ù¸¥ ¾²·¹µå³ª °´Ã¼¿¡ µ¥¸ó ¾²·¹µå·Î½á ¼ ºñ½º¸¦ Á¦°øÇÑ´Ù. °¡Àå ´ëÇ¥ÀûÀÎ ¿¹·Î ÇÖÀÚ¹Ù°¡ °¡Áö°í ÀÖ´Â Background Image Reader¿Í °°Àº µ¥¸ó ¾²·¹µåÀÌ´Ù. ÀÌ µ¥¸ó ¾²·¹ µå´Â À̹ÌÁö¸¦ ÇÊ¿ä·Î ÇÏ´Â ¾î¶² °´Ã¼³ª ¾²·¹µå¿¡°Ô À̹ÌÁö¸¦ ÀÐ°Ô ÇØÁØ´Ù. µ¥¸ó ¾²·¹µå´Â »ç¸êÇϱâ Àü±îÁö ¹«ÇÑÁ¤ ·çÇÁ¸¦ µ¹°Ô µÈ´Ù. ÀڽŠ¿¡°Ô ¼ºñ½º¸¦ ¿ä±¸ÇÏ´Â ¾î¶² ¿äû¿¡µµ ÀÀ´äÇϱâ À§ÇØ °è¼ÓÀûÀ¸·Î µ¿ÀÛÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù. ¸¸¾à ÇÁ·Î¼¼½º°¡ µ¥¸ó¾²·¹µå¸¸ °¡Áö°í ÀÖ´Ù ¸é ÀÚ¹ÙÀÎÅÍÇÁ¸®ÅÍ´Â Á¾·áÇÏ°Ô µÈ´Ù. ¿Ö³ÄÇÏ¸é µ¥¸ó¾²·¹µå È¥ÀÚ¸¸ µ¿ÀÛÇÏ°í ÀÖ´Ù¸é, ¾î¶² ¾²·¹µå¿¡°Ôµµ ¼ºñ½º¸¦ Á¦°øÇÒ ÀÏÀÌ ¾ø±â ¶§ ¹®ÀÌ´Ù. ¢Á °ü°èµÈ ¸Þ½îµå ¡Ý setDaemon() - ÁöÁ¤µÈ ¾²·¹µå¸¦ µ¥¸ó¾²·¹µå·Î ¸¸µé¾î ÁÖ´Â ¸Þ½îµå. ¸Å°³º¯¼ö¸¦ boolean°ª onÀ¸·Î ÇÏ¸é µ¥¸ó ¾²·¹µå°¡ µÇ°í, off ·Î ÁÖ¸é ÀϹÝÀûÀÎ ¾²·¹µå·Î µ¹¾Æ¿À°Ô µÈ´Ù. ¡Ý isDaemon() - ÁöÁ¤µÈ ¾²·¹µå°¡ µ¥¸ó¾²·¹µåÀΰ¡¸¦ È®ÀÎÇØ ÁÖ ´Â ¸Þ½îµå ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ÀÌ ±ÛÀº ÇÊÀÚ¿ÍÀÇ µ¿ÀÇ ¾øÀÌ »ó¾÷ÀûÀ¸·Î ¦¢ ¦¢ ¦¢ ¦¢¸®Æ÷½ºÆõǰųª ÀÌ¿ëµÉ ¼ö ¾ø½À´Ï´Ù. ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ½Å¼¼´ë ¾ð¾î, ÀÚ¹Ù Àü¹®°¡¸¦ ²Þ²Ù´Â ÀáÅÊÀÌ 3Àιæ, ½ÅÁ¤È£, Á¦°¥¿µ, Á¶±¹ |