½º·¹µå¸¦ º¸Åë °è¼Ó »ì¾Æ¼ ¿òÁ÷ÀÌ°Ô Çϱâ À§Çؼ 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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |