¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ  Á¦8Àå Thread.  8.3.2 ¸ÖƼ½º·¹µå »ý¼º  

 

8.3.2 ¸ÖƼ½º·¹µå »ý¼º

 

¸ÖƼ½º·¹µåÀÇ »ý¼ºÀº ¾ÆÁÖ °£´ÜÇÕ´Ï´Ù. 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ºÎ
ÀúÀÚ:ÃÖ¿µ°ü