¸ÖƼ½º·¹µåÀÇ »ý¼ºÀº ¾ÆÁÖ °£´ÜÇÕ´Ï´Ù. 8.2.3Àý¿¡¼ »ç¿ëÇÑ ¿¹Á¦¸¦ ÀÌ¿ëÇÏ¿© ¸ÖƼ ½º·¹µå¸¦ ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¿¹Á¦ºÎÅÍ ¸ÕÀú º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
MultiThreadMain.java |
class SoloThread extends Thread {//½º·¹µå»ó¼Ó private int number=0; public SoloThread(int n) { System.out.print(this.getName() + ":½º·¹µå½ÃÀÛ\t"); number = n; } public void run() { int i = 0; while(i < number) { System.out.print(getName() + ":"+ i + "\t"); try{ this.sleep(100); }catch(Exception e){System.out.println(e);} i++; } System.out.print(this.getName() + ":½º·¹µåÁ¾·á\t"); } } public class MultiThreadMain { public static void main(String args[] ) { System.out.println("Main¸Þ¼µåÁ¾·á"); for(int i=0; i<10; i++) new SoloThread(10).start(); System.out.println("Main¸Þ¼µåÁ¾·á"); } } |
C:\examples\8. Thread>javac MultiThreadMain.java C:\examples\8. Thread>java MultiThreadMain Main¸Þ¼µåÁ¾·á Thread-0:½º·¹µå½ÃÀÛ Thread-1:½º·¹µå½ÃÀÛ Thread-2:½º·¹µå½ÃÀÛ Thread-3:½º·¹µå½ÃÀÛ Thread-4:½º·¹µå½ÃÀÛ Thread-5:½º·¹µå½ÃÀÛ Thread-6:½º·¹µå½ÃÀÛ Thread-0:0 Thread-1:0 Thread-2:0 Thread-3:0 Thread-4:0 Thread-5:0 Thread-7:½º·¹µå½ÃÀÛ Thread-8:½º·¹µå½ÃÀÛ Thread-9:½º·¹µå½ÃÀÛ Main¸Þ¼µåÁ¾·á Thread-6:0 Thread-7:0 Thread-8:0 Thread-9:0 Thread-0:1 Thread-1:1 Thread-2:1 Thread-3:1 Thread-4:1 Thread-5:1 Thread-6:1 Thread-7:1 Thread-8:1 Thread-9:1 Thread-0:2 Thread-1:2 Thread-2:2 Thread-3:2 Thread-4:2 Thread-5:2 Thread-6:2 Thread-7:2 Thread-8:2 Thread-9:2 Thread-0:3 Thread-1:3 Thread-2:3 Thread-3:3 Thread-4:3 Thread-5:3 Thread-6:3 Thread-7:3 Thread-8:3 Thread-9:3 Thread-0:4 Thread-1:4 Thread-2:4 Thread-3:4 Thread-4:4 Thread-5:4 Thread-6:4 Thread-7:4 Thread-8:4 Thread-9:4 Thread-0:5 Thread-1:5 Thread-2:5 Thread-3:5 Thread-4:5 Thread-5:5 Thread-6:5 Thread-7:5 Thread-8:5 Thread-9:5 Thread-0:6 Thread-1:6 Thread-2:6 Thread-3:6 Thread-4:6 Thread-5:6 Thread-6:6 Thread-7:6 Thread-8:6 Thread-9:6 Thread-0:7 Thread-1:7 Thread-2:7 Thread-3:7 Thread-4:7 Thread-5:7 Thread-6:7 Thread-7:7 Thread-8:7 Thread-9:7 Thread-0:8 Thread-1:8 Thread-2:8 Thread-3:8 Thread-4:8 Thread-5:8 Thread-6:8 Thread-7:8 Thread-8:8 Thread-9:8 Thread-0:9 Thread-1:9 Thread-2:9 Thread-3:9 Thread-4:9 Thread-5:9 Thread-6:9 Thread-7:9 Thread-8:9 Thread-9:9 Thread-0:½º·¹µåÁ¾·á Thread-1:½º·¹µåÁ¾·á Thread-2:½º·¹µåÁ¾·á Thread-3:½º·¹µåÁ¾·á Thread-4:½º·¹µåÁ¾·á Thread-5:½º·¹µåÁ¾·á Thread-6:½º·¹µåÁ¾·á Thread-7:½º·¹µåÁ¾·á Thread-8:½º·¹µåÁ¾·á Thread-9:½º·¹µåÁ¾·á C:\examples\8. Thread> |
ÀÌ ¿¹Á¦´Â SoloThreadMainÀ» ¾à°£ ¼öÁ¤ÇßÀ» »Ó Å©°Ô º¯°æµÈ °ÍÀº ¾ø½À´Ï´Ù. main¸Þ¼µå¿¡¼ ¿©·¯ °³ÀÇ ½º·¹µå¸¦ »ý¼ºÇϱâÀ§Çؼ for¹®À» »ç¿ëÇß½À´Ï´Ù. ±×¸®°í °¢°¢ÀÇ ½º·¹µå°¡ ½ÇÇàÀ» Á¶±Ý¾¿ ¾çº¸Çϱâ À§Çؼ, ½º·¹µå´Â run¸Þ¼µå¿¡¼ 100¹Ð¸®¼¼ÄÁµå Á¤µµ¸¦ NotRunnable»óÅ·Π¸¸µì´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼·Î°¡ CPUÀÇ ÀÚ¿øÀ» ÀûÀýÇÏ°Ô ³ª´©¾î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌÁÒ. ´ÜÀÏ ½º·¹µå¿¡¼ º¯°æµÈ ºÎºÐÀº ´ÙÀ½°ú °°½À´Ï´Ù.
n this.sleep(100);
n for(int i=0; i<10; i++) new SoloThread(10).start();
°á°ú¸¦ Çѹø º¸½Ã±â ¹Ù¶ø´Ï´Ù. ½º·¹µå°¡ 0¹ø ºÎÅÍ 9¹ø±îÁö°¡ ½ÃÀÛÀ» ÇÕ´Ï´Ù. ±×¸®°í ÀÛ¾÷Àº 10°³ÀÇ ½º·¹µåµéÀÌ ¹ø°¥¾Æ °¡¸é¼ Çϰí ÀÖ½À´Ï´Ù. À̰ÍÀÌ ¹Ù·Î ¸ÖƼ ½º·¹µåÀÇ ±âº»¿ø¸®ÀÔ´Ï´Ù. Çѹø¾¿ ³ª´©¾î¼ ÀÏÇÑ´Ù´Â °ÍÀÌÁö¿ä. ±×·±µ¥, ÀÌ»óÇÑ °ÍÀ» Çϳª ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. ½º·¹µå 10°³¸¦ »ý¼ºÇϰí main¸Þ¼µå´Â Á¾·áÇØ ¹ö¸³´Ï´Ù. ±×³É »ý°¢Çϱ⿡´Â ½º·¹µåµéÀÌ ¸ðµÎ Á¾·áÇÒ ¶§±îÁö ¸ÞÀθ޼µå´Â ±â´Ù¸®Áö ¾Ê°Ú´Â°¡¶ó°í »ý°¢ÇϽðÚÁö¸¸ ¸ÞÀÎÀº Áß°£¿¡¼ Á¾·áÇÏ°í ½º·¹µå¸¸ »ý¼ºµÇ¾î ¾Ë¾Æ¼ ÀÛ¾÷À» Çϰí ÀÛ¾÷À» ´ÙÇÑ ÈÄ¿¡´Â ½º½º·Î ½º·¹µå¸¦ Á¾·áÇÏ°Ô µË´Ï´Ù. Áï, ¸ÞÀθ޼µå¿Í ½º·¹µå´Â º°°³·Î µ¿ÀÛÇÑ´Ù´Â °ÍÀÌÁö¿ä.
¸¸¾à RunnableÀ» »ó¼ÓÇÑ´Ù¸é ¾î¶»°Ô sleepÀ» Çϴ°¡? ¶ó°í´Â Áú¹®À» ´øÁ®º¸ÁÒ. RunnableÀ» »ç¿ëÇÒ °æ¿ì Thread·ÎºÎÅÍ »ó¼Ó ¹ÞÁö ¾Ê¾Ò±â ¶§¹®¿¡ run¸Þ¼µå ³»ºÎ¿¡¼ sleepÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·² °æ¿ì¿¡´Â ¾î¶»°Ô ÇÒ±î¿ä? °£´ÜÈ÷ ¸»Çϸé sleepÀº static¸Þ¼µå·Î Á¦°øµË´Ï´Ù. static¸Þ¼µå´Â Ŭ·¡½ºÀÇ À̸§À¸·Î Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â °Í ¾Æ½ÃÁÒ. Thread.sleep(100)ÀÌ·± ½ÄÀ¸·Î »ç¿ëÇÏ¸é µË´Ï´Ù. ±×·¸°Ô ¾î·ÆÁö´Â ¾ÊÁÒ. Thread.sleepÀº ÇÁ·Î±×·¥ÀÇ ¾îµð¿¡¼³ª »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀÌ ¹Ù·Î ½ºÅÂÆ½ÀÇ ¸Å·ÂÀÌÁÒ. °£´ÜÇÑ ¿¹¸¦ Çϳªº¸°í ³Ñ¾î°¡µµ·Ï ÇÒ±î¿ä.
ThreadSleepTest.java |
import java.util.*; public class ThreadSleepTest{ public static void main(String[] args){ System.out.println("ÇÁ·Î±×·¥½ÃÀÛ:"+new Date().toString()); try{ Thread.sleep(5000);//5ÃÊÀÇ Áö¿¬È¿°ú¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. }catch(Exception e){System.out.println(e);} System.out.println("ÇÁ·Î±×·¥½ÃÀÛ:"+new Date().toString()); } } |
C:\examples\8. Thread>javac ThreadSleepTest.java C:\examples\8. Thread>java ThreadSleepTest ÇÁ·Î±×·¥½ÃÀÛ:Sat Jun 23 02:01:58 GMT+09:00 2001 ÇÁ·Î±×·¥½ÃÀÛ:Sat Jun 23 02:02:03 GMT+09:00 2001 |
À§ÀÇ ¿¹Á¦´Â Thread.sleep(5000)À» »ç¿ëÇÏ¿© 5Ãʵ¿¾È ÇÁ·Î±×·¥À» blocking½ÃŰ´Â È¿°ú°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î RunnableÀÇ run¸Þ¼µå¿¡¼ ½º·¹µå¸¦ Áö¿¬½Ãŵ´Ï´Ù. ¿©·¯ºÐµµ Çѹø ÀÛ¼ºÇØ º¸½Ã°í °á°ú¸¦ È®ÀÎÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
Áö±Ý±îÁö ¸ÖƼ½º·¹µå¸¦ µ¿½Ã¿¡ »ý¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. ´ÙÀ½À¸·Î ¸ÖƼ½º·¹µåÀÇ ¿ì¼±±Ç¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ ÀúÀÚ:ÃÖ¿µ°ü |