¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ  Á¦8Àå Thread.  8.2.5 ThreadÁ¾·á±â¹ý  

 

 

8.2.5 ThreadÁ¾·á±â¹ý

½º·¹µå¸¦ º¸Åë °è¼Ó »ì¾Æ¼­ ¿òÁ÷ÀÌ°Ô Çϱâ À§Çؼ­ run¸Þ¼­µå ³»¿¡¼­ while¹®À» »ç¿ëÇÕ´Ï´Ù. ±×¸®°í, ¾î¶°ÇÑ Á¶°ÇÀÌ ¸¸Á·ÇÏ¸é °è¼ÓÀûÀ¸·Î ¹Ýº¹ÇÑ´Ù´Â while¹®ÀÇ Æ¯Â¡¶§¹®¿¡ run¸Þ¼­µå ³»¿¡ ´Ü°ñ ¼Õ´Ôó·³ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. ½º·¹µåÀÇ Á¾·á´Â run¸Þ¼­µåÀÇ Á¾·áÀ̱⠶§¹®¿¡, º¸Åë while¹®À» »ç¿ëÇÒ ¶§ run¸Þ¼­µåÀÇ Á¾·á´Â while¹®À» ¸¶Ä£´Ù¸é °ÅÀÇ ´ëºÎºÐ Á¾·áÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ¾Æ·¡ÀÇ ¿¹´Â ±× ¿¹¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.

 

TerminateThread.java

class MyThread extends Thread {

             private int limit=0;

             private boolean flag=false;

             public MyThread(int limit){

                           this.limit=limit;

             }

             public void run() {

                           int count=0;

                           while(!flag) {

                                        try {

                                                     this.sleep(100);

                                        } catch(InterruptedException e) {  }

                                        if(count==limit)

                                                     flag=true;

                                        System.out.println(this.getName() + " : " + count);

                                        count++;

                           }//while

                           System.out.println(this.getName() + "Á¾·á");

             }

}

public class TerminateThread {

             public static void main(String args[]) {

                           System.out.println("ÀÛ¾÷½ÃÀÛ");

                           MyThread r1 = new MyThread(6);

                           MyThread r2 = new MyThread(8);

                           MyThread r3 = new MyThread(5);

                           r1.start();

                           r2.start();

                           r3.start();

                           System.out.println("ÀÛ¾÷Á¾·á");

             }

}

C:\examples\8. Thread>javac TerminateThread.java

 

C:\examples\8. Thread>java TerminateThread

ÀÛ¾÷½ÃÀÛ

ÀÛ¾÷Á¾·á

Thread-0 : 0

Thread-1 : 0

Thread-2 : 0

Thread-0 : 1

Thread-1 : 1

Thread-2 : 1

Thread-0 : 2

Thread-1 : 2

Thread-2 : 2

Thread-0 : 3

Thread-1 : 3

Thread-2 : 3

Thread-0 : 4

Thread-1 : 4

Thread-2 : 4

Thread-0 : 5

Thread-1 : 5

Thread-2 : 5

Thread-2Á¾·á

Thread-0 : 6

Thread-0Á¾·á

Thread-1 : 6

Thread-1 : 7

Thread-1 : 8

Thread-1Á¾·á

 

 

MyThread¸¦ »ý¼ºÇÒ ¶§ limitÀ» ÇÒ´ç¹Þ°í ½º·¹µå°¡ startÇÏ¿© ½ÇÇàµÇ¸é run¸Þ¼­µåÀÇ while¹®ÀÇ count°¡ limit¿¡ µµ´ÞÇÒ ¶§±îÁö¸¸ ½ÇÇàÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.

 

1.       ÀÏ´Ü ½º·¹µå¸¦ ¸¸µé±â À§Çؼ­ MyThread´Â Thread¸¦ »ó¼ÓÇϰí ÀÖ½À´Ï´Ù.

n         class MyThread extends Thread

2.       ¸â¹öº¯¼ö 2°³¸¦ ¼±¾ðÇϰí ÀÖ½À´Ï´Ù.

n         while¹®¿¡¼­´Â ÀÚüÀûÀ¸·Î Ä«¿îÆ®¸¦ Áõ°¡½ÃŲ´Ù.

n         private int limit=0; à while¹®¿¡¼­ Áõ°¡ÇÏ´Â Ä«¿îÆ®ÀÇ ÇѰ踦 ÁöÁ¤

n         private boolean flag=false; à ÀÌ Á¶°Ç¿¡ µû¶ó¼­ while¹®ÀÇ Á¾·á¿©ºÎ¸¦ °áÁ¤Áþ´Â´Ù.

3.       limitÀ» ÇÒ´ç ¹Þ´Â »ý¼ºÀÚ ¸Þ¼­µå¸¦ ¸¸µì´Ï´Ù.

n         public MyThread(int limit){

n                      this.limit=limit;

n         }

4.       while¹®¿¡¼­ count¸¦ °è¼ÓÀûÀ¸·Î Áõ°¡½Ãŵ´Ï´Ù. ¸¸¾à count°¡ limit¿¡ µµ´ÞÇϸé while¹®À» Á¾·áÇϵµ·Ï Çϰí ÀÖ½À´Ï´Ù.

n         public void run() {

n                      int count=0;

n                      while(!flag) {

n                                   if(count==limit) //count°¡ limit°¡ °°ÀºÁö È®ÀÎ

n                                                 flag=true;//while¹®ÀÇ Á¶°ÇÀ» º¯°æ

n                                   System.out.println(this.getName() + " : " + i);

n                                   count++;//Ä«¿îÆ®Áõ°¡

n                      }//while

n                      System.out.println(this.getName() + "Á¾·á");

n         }

5.       ½º·¹µå°¡ Â÷·Ê·Î ½ÇÇà µÇ±â À§Çؼ­ sleep¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ½ÇÇàÀ» ¾çº¸ÇÏ°Ô ÇÕ´Ï´Ù.

n         try {

n                      this.sleep(500);

n         } catch(InterruptedException e) {  }

 

while¹®ÀÇ Á¶°Ç¿¡ µû¶ó ·çÇÁ¸¦ ³¡¸¶Ä¡´Â ½º·¹µåÀÇ Á¾·á±â¹ýÀº °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. »ç½Ç ½º·¹µå¸¦ Á¾·áÇϱâ À§Çؼ­ ¿¹Àü¿£ stop¸Þ¼­µå¸¦ È£ÃâÇϱ⵵ Çß½À´Ï´Ù. ÇÏÁö¸¸ stop¸Þ¼­µåÀÇ °­Á¦ È£ÃâÀº ½Ã½ºÅÛ¿¡ ¿µÇâÀ» ÁÙ ¼ö Àֱ⠶§¹®¿¡ Deprecated Áï, ¿äÁîÀ½Àº »ç¿ë ÇÏÁö ¾Ê½À´Ï´Ù. À§¿¡¼­ »ç¿ëÇÑ while¹®ÀÇ Á¶°Çó¸®ÀÇ ¹æ¹ýÀ» Àû±Ø ±ÇÀåÇϰí ÀÖ½À´Ï´Ù. ¹°·Ð while¹® ³»¿¡¼­ break¸¦ »ç¿ëÇØ¼­ ºüÁ®³ª¿Íµµ »ó°ü¾ø°í, returnÀ¸·Î ºüÁ®³ª¿Íµµ »ó°ü¾ø½À´Ï´Ù. ¾î´À°ÍÀ» »ç¿ëÇϽõç Á¦¾î¹®¿¡ °ü·ÃµÈ °ÍÀÌ´Ï ÁÁÀº °ÍÀ» »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. ´ÙÀ½À¸·Î ¿©·¯ °³ÀÇ ½º·¹µå¸¦ µ¿½Ã¿¡ Á¦¾îÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ
ÀúÀÚ:ÃÖ¿µ°ü