½º·¹µå¸¦ »ý¼ºÇÏ°í start·Î ±âµ¿½ÃÅ°¸é ÀÌÈĺÎÅÍ ¿î¿µÃ¼Á¦´Â ÁÖ±âÀûÀ¸·Î
½Ã°£À» ÇÒ´çÇÏ¿© ½º·¹µå¸¦ ½ÇÇàÇÑ´Ù. run ¸Þ¼µå°¡ ¸®ÅÏÇÏ¿© ÀÛ¾÷À» ¿Ï·áÇÏ¸é ½º·¹µå´Â ½ÇÇàÀ» Á¾·áÇÏ°í
°ü·Ã Á¤º¸³ª È£Ãâ ½ºÅÃÀº Á¦°ÅµÈ´Ù.
½º·¹µå¸¦ °ü¸®ÇÏ´Â ÀÏÀº ¿î¿µÃ¼Á¦ÀÇ ¸òÀ̸ç ÇÁ·Î±×·¥Àº ÇÊ¿äÇÒ ¶§ ½º·¹µå¸¦ »ý¼ºÇÏ¿© ±âµ¿½ÃÅ°¸é µÈ´Ù. ±×·¯³ª ¶§·Î´Â ÁÖ ½º·¹µå¿¡¼ ÀÛ¾÷ ½º·¹µåÀÇ ½ÇÇàÀ» Á¦¾îÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ¿î¿µÃ¼Á¦ÀÇ
»óȲ¿¡ µû¶ó, °ü¸® ¸Þ¼µå È£Ãâ¿¡ ÀÇÇØ ½º·¹µå´Â ´ÙÀ½°ú °°Àº »óŸ¦ ¼øȯÇÑ´Ù.
start¿¡ ÀÇÇØ ½º·¹µå¸¦ ±âµ¿ÇÒ ¶§ ¹Ù·Î ½ÇÇàÀ» ½ÃÀÛÇÏÁö ¾Ê°í ½ÇÇà´ë±â
Å¥¿¡¼ ÀÚ±â Â÷·Ê¸¦ ±â´Ù¸°´Ù. ½ºÄÉÁÙ·¯´Â CPU ½Ã°£À» ÂÉ°³
´ë±â¿ÀÇ ½º·¹µå¸¦ ¹ø°¥¾Æ ½ÇÇàÇÑ´Ù. ÀÚ±â Â÷·Ê°¡ µÇ¸é run ¸Þ¼µåÀÇ
Äڵ带 ½ÇÇàÇϸç ÇÒ´ç ¹ÞÀº ½Ã°£À» ´Ù ¾²¸é ´ë±â¿·Î µé¾î°¡ ´ÙÀ½ Â÷·Ê¸¦ ±â´Ù¸°´Ù. run ¸Þ¼µåÀÇ ¸ðµç
Äڵ带 ½ÇÇàÇÏ°í ¸®ÅÏÇÏ¸é ½º·¹µå´Â Á¾·áµÈ´Ù.
ÀÌ°ÍÀÌ °¡Àå º¸ÆíÀûÀÎ ½º·¹µåÀÇ ÀÏ»ýÀÌµÇ ¿î¿µÃ¼Á¦ÀÇ »óȲ¿¡ µû¶ó ½º·¹µåÀÇ ½ÇÇà »óÅ°¡ ¹Ù²ð ¼ö ÀÖ°í ½º·¹µå °ü¸®
¸Þ¼µå¿¡ ÀÇÇØ º¯È¸¦ ÁÙ ¼öµµ ÀÖ´Ù. ½º·¹µåÀÇ ÇöÀç »óŸ¦ Á¶»çÇÒ ¶§´Â ´ÙÀ½ ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù.
Thread.State getState()
Thread.State¶ó´Â ³»ºÎ ¿°ÅÇü ŸÀÔÀÇ °ªÀ» ¸®ÅÏÇϴµ¥ ´ÙÀ½°ú
°°Àº ¿°Å°ªÀÌ Á¤ÀǵǾî ÀÖ´Ù.
»óÅÂ |
¼³¸í |
NEW |
»ý¼º¸¸ µÇ¾î ÀÖ°í ¾ÆÁ÷ ½ÃÀÛÀº ÇÏÁö ¾ÊÀº »óÅ |
RUNNABLE |
½ÇÇàÁß ¶Ç´Â ´ÙÀ½ ½ÇÇà ½Ã°£À» ±â´Ù¸®´Â »óÅ |
BLOCKED |
µ¿±âÈ ºí·Ï¿¡ µé¾î°¡±â À§ÇØ ´ë±âÁßÀÎ »óÅ |
WAITING |
´Ù¸¥ ½º·¹µå°¡ ƯÁ¤ ÀÛ¾÷À» ¿Ï·áÇÒ ¶§±îÁö ´ë±âÁß |
TIMED_WAITING |
ÁöÁ¤ÇÑ ½Ã°£µ¿¾È ´Ù¸¥ ½º·¹µåÀÇ ÀÛ¾÷ ¿Ï·á ´ë±âÁß |
TERMINATED |
½ÇÇàÀ» ¸¶Ä¡°í Á¾·áµÈ »óÅ |
getState ¸Þ¼µå´Â ½º·¹µå »óŸ¦ ¸ð´ÏÅ͸µÇÏ´Â ¸ñÀûÀ¸·Î¸¸ »ç¿ëÇϸç
µ¿±âÈ¿¡ »ç¿ëÇÏ´Â °ÍÀº ±ÇÀåÇÏÁö ¾Ê´Â´Ù. ÀÌ ¸Þ¼µå´Â ÀÚ¹Ù 1.5¿¡¼
µÚ´Ê°Ô Ãß°¡µÇ¾ú´Âµ¥ ±× Àü¿¡´Â »óÅ Á¶»ç ¾øÀ̵µ ½º·¹µå¸¦ Àß »ç¿ëÇÒ ¼ö ÀÖ¾ú´Ù´Â ¾ê±â´Ù. ´ÙÀ½ ¼¼ ¸Þ¼µå´Â
½º·¹µåÀÇ »óŸ¦ °Á¦·Î º¯°æÇÑ´Ù.
void suspend()
void resume()
void stop()
°¢°¢ ½º·¹µå¸¦ ÀϽà ÁßÁö, Àç°³, °Á¦
Á¾·á½ÃŲ´Ù. ½ºÄÉÁÙ·¯´Â ÀϽà ÁßÁöµÈ ½º·¹µå¿¡°Ô CPU ½Ã°£À»
ÁÖÁö ¾ÊÀ¸¸ç Àç°³ÇÏ¸é ´Ù½Ã ½Ã°£À» ÇÒ´ç¹Þ´Â´Ù. suspend´Â ¾óÀ½ÀÌ°í resumeÀº ¶¯ÀÌ´Ù. ¸Þ¼µå À̸§¸¸ÅÀ̳ª ±â´Éµµ ¸íÄèÇÏ´Ï °£´ÜÇÑ
¿¹Á¦·Î Å×½ºÆ®Çغ¸ÀÚ.
suspend |
|
class JavaTest { public
static void main(String[] args) { PrintThread
worker = new PrintThread(); worker.start(); for
(int num = 0;num < 30;num++) { System.out.print("O"); try
{ Thread.sleep(200); } catch (InterruptedException e) { ; } if
(num == 5) worker.suspend(); if
(num == 25) worker.resume(); } } } class PrintThread extends Thread { public
void run() { for
(int num = 0;num < 30;num++) { System.out.print("X"); try
{ Thread.sleep(100); } catch (InterruptedException e) { ; } } } } |
|
½ÇÇà°á°ú |
XOXXXOXOXXOXXOXXXOOOOOOOOOOOOOOOOOOOOOXXXOXXOXXOXOXXXXXXXXXX |
ÁÖ½º·¹µå¿¡¼ numÀÌ 5ÀÏ
¶§ ÀÛ¾÷ ½º·¹µå¸¦ Àá½Ã ÁßÁö½ÃÅ°°í numÀÌ 25ÀÏ ¶§ ´Ù½Ã
Àç°³½ÃÄ×´Ù. µ¿±×¶ó¹Ì 5°³ ÂïÀº ÈÄ ÀÛ¾÷ ½º·¹µå´Â Àá½Ã ¸ØÃß°í
µ¿±×¶ó¹Ì¸¸ °è¼Ó Âï´Ù°¡ 25°³ ÂïÀº ÈĺÎÅÍ X°¡ Ãâ·ÂµÈ´Ù.
½º·¹µå¸¦ °Á¦·Î Á¤Áö½ÃÅ°¸é µ¿±âÈ ¹®Á¦·Î ÀÎÇÑ µ¥µå¶ô À§ÇèÀÌ ÀÖ¾î ÀÌ ¸Þ¼µåµéÀº ±ÇÀåÇÏÁö ¾ÊÀ¸¸ç Æó±âµÇ¾ú´Ù. ÀÛ¾÷ ½º·¹µå°¡ ƯÁ¤ ÀÚ¿øÀ» »ç¿ëÇÏ°í ÁÖ½º·¹µå°¡ ÀÌ ÀÚ¿øÀÌ ÇØÁ¦µÇ±â¸¦ ±â´Ù¸®°í ÀÖ´Â »óÅ¿¡¼ ÀÛ¾÷ ½º·¹µå°¡ Á¤ÁöµÇ¸é
´ë±â »óŸ¦ Ç® ¼ö ¾ø¾î À§ÇèÇÏ´Ù.
½º·¹µåÀÇ »óÅ´ ½ºÄÉÁÙ·¯°¡ ¾Ë¾Æ¼ Àß ÅëÁ¦Çϴµ¥ À̸¦ ÀÎÀ§ÀûÀ¸·Î °Çµå¸®¸é »ç°í°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ³ô¾ÆÁø´Ù. °¡±ÞÀû ÀÚ¿¬½º·´°Ô Èê·¯°¡µµ·Ï ³» ¹ö·Á µÎ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ µÎ
¸Þ¼µå´Â ½º·¹µåÀÇ ½ÇÇà ½Ã°£À» Á¦¾îÇÑ´Ù.
static void sleep(long millis)
static void yield()
sleep ¸Þ¼µå´Â ÁöÁ¤ÇÑ ½Ã°£¸¸Å ½º·¹µåÀÇ ½ÇÇàÀ» ÁßÁöÇÏ°í Àá½Ã
½®´Ù. ½Ã°£Àº 1/1000ÃÊ ´ÜÀ§·Î ¼¶¼¼ÇÏ°Ô ÁöÁ¤ÇÑ´Ù. ½¬´Â Áß¿¡ interrupt ¸Þ¼µå¿¡ ÀÇÇØ °Á¦·Î ´ë±â°¡ Ç®¸± ¼ö
ÀÖ¾î ¹Ýµå½Ã ¿¹¿Ü 󸮸¦ ÇØ¾ß ÇÏ¸ç ±×·¡¼ try ºí·ÏÀÌ ÇʼöÀûÀÌ´Ù.
Áö±Ý±îÁöÀÇ ¿¹Á¦¿¡¼ Ãâ·Â ¼Óµµ¸¦ Á¦¾îÇϱâ À§ÇØ °è¼Ó »ç¿ëÇß¾ú´Ù.
yield´Â ÇÒ´çµÈ ½Ã°£À» Æ÷±âÇÏ°í ½ÇÇà ½Ã°£À» ¾çº¸Çϵµ·Ï Àǻ縦
Ç¥½ÃÇÑ´Ù. ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù°í Çؼ Áï½Ã ½ÇÇà ´ë±â »óÅ°¡ µÇ´Â °ÍÀº ¾Æ´Ï¸ç ½ºÄÉÁÙ·¯°¡ °áÁ¤ÇÑ´Ù. ½º·¹µå°¡ ¾çº¸ÇÏ´õ¶óµµ CPU¸¦ ¾µ ½º·¹µå°¡ ¾øÀ¸¸é ¹Ý³³À» ¹ÞÁö ¾Ê´Â´Ù. °æÀï »óÅ Çؼҳª µð¹ö±ë ¸ñÀûÀ¸·Î¸¸ °¡²û »ç¿ëµÇ¸ç ½Ç¿ëÀûÀ¸·Î ÀÌ ¸Þ¼µå°¡ ²À ÇÊ¿äÇÑ °æ¿ì´Â µå¹°´Ù.
sleepÀ̳ª yield´Â
µÑ ´Ù Á¤Àû ¸Þ¼µå¿©¼ ƯÁ¤ ½º·¹µå °´Ã¼¿¡ ´ëÇØ È£ÃâÇÒ ¼ö ¾ø´Ù. ´ë±â³ª ¾çº¸ÀÇ ´ë»óÀº Ç×»ó ÀÌ ¸Þ¼µå¸¦
È£ÃâÇÏ´Â ÇöÀç ½º·¹µåÀÌ´Ù. ÀÚ¹ßÀûÀ¸·Î ½Ã°£À» ¾çº¸ÇÒ ¼ö´Â À־ ¿ÜºÎ¿¡¼ worker.sleep()½ÄÀ¸·Î È£ÃâÇÏ¿© ´Ù¸¥ ½º·¹µåÀÇ ½ÇÇàÀ» °Á¦·Î Á¦¾îÇÒ ¼ö´Â ¾ø´Ù.
½º·¹µå´Â CPU ½Ã°£À» °øÆòÇÏ°Ô ¹èÁ¤¹Þ´Â´Ù. ¾Õ¿¡¼ ¸¸µç ¿¹Á¦ÀÇ µÎ ½º·¹µå´Â sleep ½Ã°£ÀÌ ´Þ¶ó ³¡³ª´Â ½Ã°£¿¡
Â÷ÀÌ°¡ Àִµ¥ Áö¿¬ ½Ã°£À» ÀÏÄ¡½ÃÅ°¸é °ÅÀÇ ¶È°°ÀÌ ³¡³´Ù. ¿ì¼±¼øÀ§´Â
CPU ½Ã°£À» ¾ó¸¶³ª ´õ »ç¿ëÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â ½º·¹µåÀÇ ¼Ó¼ºÀÌ´Ù.
±ä±ÞÇÑ ÀÛ¾÷À» ó¸®ÇÏ´Â ½º·¹µå´Â ¿ì¼±¼øÀ§¸¦ ³ô¿© ´õ ¸¹Àº CPU ½Ã°£À»
¹èÁ¤ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¹é±×¶ó¿îµå ÀÛ¾÷Àº õõÈ÷ Çصµ »ó°ü¾øÁö¸¸ »ç¿ëÀÚ¸¦ ´ë¸éÇÏ´Â ½º·¹µå´Â ¹ÝÀÀÀÌ ¹ÎøÇؾß
ÇϹǷΠ¿ì¼±¼øÀ§¸¦ ³ôÀÌ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ¿ì¼±¼øÀ§´Â ´ÙÀ½ ¸Þ¼µå·Î Á¶»ç ¹× ¼³Á¤ÇÑ´Ù.
void setPriority(int newPriority)
1 ~ 10±îÁöÀÇ Áß¿äµµ¸¦ ÁöÁ¤Ç쵂 º¸ÅëÀº ´ÙÀ½ ¼¼ °³ÀÇ »ó¼ö·Î º¸Åë
¼øÀ§, ³ôÀº ¼øÀ§, ³·Àº ¼øÀ§ Á¤µµ¸¸ ÁöÁ¤ÇÑ´Ù. »ó¼ö ´ë½Å 1 ~ 10 »çÀÌÀÇ ÀÓÀÇÀÇ Á¤¼ö¸¦ »ç¿ëÇصµ »ó°ü¾ø´Ù. 10ÀÌ °¡Àå ³ô°í 1ÀÌ °¡Àå ³·´Ù.
public static final int NORM_PRIORITY = 5;
public static final int MIN_PRIORITY = 1;
public static final int MAX_PRIORITY = 10;
¿ì¼±¼øÀ§´Â Àý´ëÀûÀÎ °ªÀÌ ¾Æ´Ï¶ó »ó´ëÀûÀÎ °ªÀÌ´Ù. ¿ì¼±¼øÀ§ 5ÀÇ ½º·¹µå´Â 3º¸´Ù´Â ´õ ¸¹Àº ½Ã°£À» ÇÒ´ç ¹ÞÀ¸¸ç 7º¸´Ù´Â ´õ ÀûÀº ½Ã°£À» ÇÒ´ç ¹Þ´Â´Ù. »õ·Î »ý¼ºµÇ´Â ½º·¹µå´Â ºÎ¸ð
½º·¹µåÀÇ ¿ì¼±¼øÀ§¸¦ »ó¼Ó¹Þ´Â´Ù. ÁÖ ½º·¹µåÀÇ µðÆúÆ® ¿ì¼±¼øÀ§´Â 5À̸ç
ÀÛ¾÷ ½º·¹µåµµ Ưº°ÇÑ ÁöÁ¤ÀÌ ¾ø´Â ÇÑ 5 ¼øÀ§·Î »ý¼ºµÈ´Ù. ¿ì¼±¼øÀ§´Â start ¸Þ¼µå È£Ãâ Àü¿¡, Áï ½º·¹µå°¡ ½ÃÀ۵DZâ Àü¿¡ ¹Ì¸® º¯°æÇؾß
ÇÑ´Ù.
priority |
|
class JavaTest { public
static void main(String[] args) { PrintThread1
worker1 = new PrintThread1(); PrintThread2
worker2 = new PrintThread2(); worker1.start(); worker2.setPriority(Thread.MAX_PRIORITY); worker2.start(); } } class PrintThread1 extends Thread { public
void run() { double
sum = 0; for
(int i = 0;i < 10000000;i++) { sum
+= Math.cos(i); } System.out.println("cos
= " + sum); } } class PrintThread2 extends Thread { public
void run() { double
sum = 0; for
(int i = 0;i < 10000000;i++) { sum
+= Math.sin(i); } System.out.println("sin
= " + sum); } } |
|
½ÇÇà°á°ú |
cos = 1.3385389790054403 sin = 1.5353436153503854 |
PrintThread1 ½º·¹µå´Â
cos °ªÀ» õ¸¸ ¹ø °è»êÇÏ´Â ¿¬»êÀ» ¼öÇàÇϸç PrintThread2 ½º·¹µå´Â sin °ªÀ» õ¸¸ ¹ø °è»êÇÑ´Ù. µÑ ´Ù ±²ÀåÈ÷ ¿À·¡ °É¸®´Â ¿¬»êÀ»
Çϴµ¥ ¸ÕÀú ³¡³ª´Â ½º·¹µåÀÇ °á°ú°¡ À§ÂÊ¿¡ Ãâ·ÂµÈ´Ù. worker2ÀÇ ¿ì¼±¼øÀ§¸¦ ÃÖ´ëÇÑ ³ô¿© µÎ¾ú±â
¶§¹®¿¡ ÀÌ ½º·¹µå°¡ ´õ ¸¹Àº ½Ã°£À» ÇÒ´ç¹Þ¾Æ ÀÛ¾÷ÀÌ ¸ÕÀú ³¡³¯ °ÍÀÌ´Ù.
À̷лóÀ¸·Î´Â ±×·¸Áö¸¸ ¿ì¼±¼øÀ§ °áÁ¤ ¾Ë°í¸®ÁòÀº ½Ã½ºÅÛ »óȲ¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ°í ¿©·¯ ¿ä¼Ò°¡ °³ÀÔÇϱ⠶§¹®¿¡
½ÇÁ¦ °á°ú´Â ¿¹ÃøÇϱ⠾î·Æ´Ù. ¿ì¼±¼øÀ§ ÁöÁ¤Àº ½Ã°£À» ÀÚÁÖ ÇÒ´çÇØ ´Þ¶ó´Â ¿äûÀÏ »ÓÀ̸ç ÀÌ ¿äûÀ» µé¾îÁÙ
°ÍÀΰ¡ ¾Æ´Ñ°¡´Â ½Ã½ºÅÛÀÌ °áÁ¤ÇÑ´Ù. ´ë°³ÀÇ °æ¿ì´Â ´«¿¡ ¶é¸¸ÇÑ Â÷ÀÌ°¡ ³ªÁö ¾ÊÀ¸¸ç Á¤±³ÇÑ ½ºÄÉÁÙ¸µ ¾Ë°í¸®Áò¿¡
¹æÇØ°¡ µÇ¹Ç·Î À¢¸¸ÇÏ¸é °Çµå¸®Áö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.
½º·¹µå´Â °íÀ¯ÇÑ ¹®ÀÚ¿ À̸§À» °¡Áø´Ù. ½º·¹µå¸¦ »ý¼ºÇÒ ¶§ Àμö¸¦
Àü´ÞÇÏ¿© À̸§À» ¹Ì¸® ÁöÁ¤Çϰųª ½ÇÇàÁß¿¡ ´ÙÀ½ ¸Þ¼µå·Î À̸§À» º¯°æ, Á¶»çÇÑ´Ù.
void setName(String name)
String getName()
º°µµÀÇ À̸§À» ÁÖÁö ¾ÊÀ¸¸é ÁÖ½º·¹µå´Â mainÀ̶ó´Â À̸§ÀÌ ÁÖ¾îÁö¸ç
ÀÛ¾÷ ½º·¹µå´Â Thread-n À̶ó´Â ÀÏ·Ã ¹øÈ£·Î À̸§À» ºÙÀδÙ. ½º·¹µå
À̸§Àº ½ÇÇà°ú´Â º°¹Ý »ó°üÀÌ ¾øÀ¸¸ç µð¹ö±ëÀ̳ª Á¤º¸ Ãâ·Â¿ëÀ¸·Î »ç¿ëµÈ´Ù.
½º·¹µå´Â Á¾·á ¹æ½Ä¿¡ µû¶ó »ç¿ëÀÚ ½º·¹µå(User Thread)¿Í
µ¥¸ó ½º·¹µå(Daemon Thread)·Î ³ª´©¾îÁø´Ù. »ç¿ëÀÚ
½º·¹µå°¡ ¸ðµÎ Á¾·áµÇ¾î¾ß ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¸ç Çϳª¶óµµ ½ÇÇàÁßÀÌ¸é ¸¶Áö¸· ½º·¹µå°¡ ½ÇÇàÀ» ¸¶Ä¥ ¶§±îÁö ±â´Ù¸°´Ù. ¹Ý¸é
µ¥¸óÀº ÇÁ·Î±×·¥ Á¾·á½Ã¿¡ ½º·¹µå°¡ ½ÇÇàÁßÀÌ´õ¶óµµ °Á¦ Á¾·áµÈ´Ù.
»ç¿ëÀÚ¸¦ ´ë¸éÇϰųª À¯ÇÑÇÑ ¿¬»êÀ» ó¸®ÇÑ´Ù¸é »ç¿ëÀÚ ½º·¹µå·Î ¸¸µé¾î ÀÛ¾÷ÀÌ ³¡³¯ ¶§±îÁö °è¼Ó ½ÇÇàÇØ¾ß ÇÑ´Ù. ¹Ý¸é ´Ü¼øÇÑ Àå½ÄÀ̳ª ¹®¼ ÀÚµ¿ ÀúÀå µî ¾ðÁ¦µçÁö ±×¸¸ µÎ¾îµµ »ó°ü¾ø´Â ÀÛ¾÷Àº µ¥¸ó ½º·¹µå·Î ½ÇÇàÇÑ´Ù. »õ ½º·¹µå´Â ºÎ¸ðÀÇ ¼Ó¼ºÀ» µû¶ó °¡´Âµ¥ mainÀÌ »ç¿ëÀÚ ½º·¹µå¿©¼
º¸ÅëÀº »ç¿ëÀÚ ½º·¹µå·Î »ý¼ºµÈ´Ù. µ¥¸ó ½º·¹µå·Î º¯°æÇÒ ¶§´Â ´ÙÀ½ ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù.
void setDaemon(boolean on)
boolean isDaemon()
»ý¼º Á÷ÈÄ start ¸Þ¼µå¸¦ È£ÃâÇϱâ Àü¿¡ setDaemon(true)¸¦ È£ÃâÇÏ¿© µ¥¸ó ½º·¹µå·Î ÁöÁ¤ÇÑ´Ù. µ¥¸ó
½º·¹µå°¡ »ý¼ºÇÏ´Â ½º·¹µå´Â ÀÚµ¿À¸·Î µ¥¸ó ½º·¹µå°¡ µÈ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.
daemon |
|
class JavaTest { public
static void main(String[] args) { PrintThread
worker = new PrintThread(); worker.setDaemon(true); worker.start(); for
(int i = 0;i < 20;i++) { System.out.print(i); try
{ Thread.sleep(500); } catch (InterruptedException e) { ; } } } } class PrintThread extends Thread { public
void run() { while(true)
{ System.out.print("save"); try
{ Thread.sleep(2000); } catch (InterruptedException e) { ; } } } } |
|
½ÇÇà°á°ú |
0123save456save78910save11121314save15161718save19 |
ÁÖ½º·¹µå´Â 20±îÁö Á¤¼ö¸¦ Ãâ·ÂÇϴµ¥ ¹®¼¸¦ ÆíÁýÇÏ´Â ÀÛ¾÷À̶ó°í ÇÏÀÚ. ÁÖ½º·¹µå°¡ ÀÌ ÀÛ¾÷À» ÇÏ´Â µ¿¾È ÀÛ¾÷ ½º·¹µå´Â ÆíÁýµÈ ¹®¼¸¦ 2ÃÊ
°£°ÝÀ¸·Î ÀÚµ¿ ÀúÀåÇÑ´Ù. ½ÇÇàÇØ º¸¸é ÁÖ±âÀûÀ¸·Î ¹®¼¸¦ ÀúÀåÇÏ¸ç »ó¿ë ¿öµå ÇÁ·Î¼¼¼¿¡µµ ÀÌ·± ±â´ÉÀÌ
ÀÖ´Ù. ÀÚµ¿ ÀúÀå ±â´ÉÀÌ º°µµÀÇ ½º·¹µå·Î ºÐ¸®µÇ¾î ÀÖ¾î ÀúÀåÁß¿¡µµ ¹®¼¸¦ °è¼Ó ÆíÁýÇÒ ¼ö ÀÖ´Ù.
ÀÌ·± ¹é±×¶ó¿îµå 󸮴 Ƚ¼ö°¡ Á¤ÇØÁ® ÀÖÁö ¾Ê°í °è¼Ó ¹Ýº¹µÇ¹Ç·Î º¸Åë ¹«ÇÑ ·çÇÁ¸¦ µ·´Ù. ·çÇÁ¸¦ ºüÁ®³ª¿À´Â ±¸¹®ÀÌ ¾øÁö¸¸ ½ÇÁ¦·Î ¹«ÇÑÈ÷ ½ÇÇàµÇ´Â °ÍÀº ¾Æ´Ï¸ç µ¥¸ó ½º·¹µå·Î ÁöÁ¤µÇ¾î ÀÖ¾î ÁÖ½º·¹µå°¡
³¡³ª¸é °Á¦ Á¾·áµÈ´Ù. ÁÖ½º·¹µå°¡ ÆíÁý ÀÛ¾÷À» ¸¶Ä¡¸é ÀÚµ¿ ÀúÀå ÀÛ¾÷µµ ´õ ÇÒ ÇÊ¿ä ¾ø´Ù.
±×·¡¼ ½º·¹µå »ý¼º Á÷ÈÄ¿¡ µ¥¸ó ½º·¹µå·Î ÁöÁ¤ÇÏ¿´´Ù. µ¥¸ó ½º·¹µå
ÁöÁ¤À» ÁÖ¼® ó¸®Çϸé ÁÖ½º·¹µå°¡ Á¾·áµÇ¾îµµ ÀÚµ¿ ÀúÀå Äڵ带 °è¼Ó ½ÇÇàÇÏ´À¶ó ¿µ¿øÈ÷ Á¾·áµÇÁö ¾Ê´Â´Ù. ÇÁ·Î±×·¥
½ÇÇà È帧°ú º°¹Ý »ó°üÀÌ ¾ø´Â Àå½Ä¼º ¾Ö´Ï¸ÞÀ̼Ç, ³×Æ®¿÷ Á¢¼Ó ´ë±â,
¹®¼ Á¤·Ä ·çƾ µîÀº µ¥¸ó ½º·¹µå·Î ó¸®ÇÑ´Ù.