¾Èµå·ÎÀ̵å´Â ±âº»ÀûÀ¸·Î ÀÚ¹Ù ¾²·¹µå Çü½ÄÀ» µû¶ó°£´Ù´Â°ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù.
¾Èµå·ÎÀ̵å´Â main ½º·¹µå°¡ ÇϳªÀÇ ¾îÇø®ÄÉÀ̼ǿ¡¼ µ¶Á¡ÀûÀ¸·Î ÀÛµ¿Çϸç
mainÀÇ ÀÚ½Ä ¾²·¹µå¸¦ handlerµîÀ» ÅëÇÏ¿© ¸ÖƼ ½º·¹µù ±â´ÉÀ» Á¦°øÇÑ´Ù°í ¾Ë°í ÀÖ½À´Ï´Ù.
Á¦°¡ ±Ã±ÝÇÑ°ÍÀº ¹Ù·Î ¾²·¹µåÀÇ wait(Times)ºÎºÐÀÔ´Ï´Ù.
wait(Times)ȤÀº waitÀÇ °æ¿ì ¹Ýµå½Ã notify() ȤÀº notifyAll()°ú ÇÔ²² ½ÖÀ» ÀÌ·ç¾î¾ß ÇÕ´Ï´Ù.
Å×½ºÆ®¿ëÀ¸·Î ¾²·¹µå¸¦ ´Ù·ç´ø Áß À̺κп¡¼ ¹®Á¦°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.
Ŭ·¡½º·Î implements ½ÃŲ ¾²·¹µå, ÀÏ¹Ý °´Ã¼ »ý¼º ½º·¹µå, ÀÌ³Ê¸Õ Å¸ÀÔ ¾²·¹µå
¿ä 3°³¸¦ °¡Áö°í ½ÇÇèÇØ ºÃ´Âµ¥.
boolean flag = false;
public void run()
{
ArrayList<Long> time.addAll(Time);
//Time ={500,300,600,1500....};
int a = 0;
while(!flag){
syncronized(this)
{
this.wait(time);
Log.i("String","String"+a);
this.notify();
a++;
if(a>time.size())
{
flag = true;
}
}
}
}
if(flag ==true)
{
thread.stop();
thread.interrupt();
}
ÀÏ¹Ý wait()ÀÇ °æ¿ì Á¤»ó ÀÛµ¿ÇÕ´Ï´Ù.
ÇÏÁö¸¸ long ¹è¿ÀÇ °ªÀ» ¹Þ¾Æ¿Í¼ wait¿¡ ´ë±â ½Ã°£À» Á÷Á¢ ÁÖ°í
±× ½Ã°£ ÀÌÈÄ¿¡ ±ú¾î³ª°Ô Çصΰí, getStackTracer¿Í
isDeamon, isAlive¸¦ üũÇغ¸¾Ò½À´Ï´Ù.
½º·¹µåÀÇ È°µ¿ÀÌ flag¿¡ ÀÇÇØ Á¾·á µÇ¾úÀ½¿¡µµ ºÒ±¸ÇÏ°í,
½º·¹µå´Â Á¾·áµÇÁö ¾Ê½À´Ï´Ù.
¹®Á¦´Â ÀÌ ½º·¹µå¸¦ ´Ù½ÃÇѹø ½ÇÇàÇÏ°Ô µÇ¸é wait()¿¡¼
ŸÀӾƿô ¿À·ù°¡ ³ª¸é¼ °Á¦Á¾·á µÇ°Ô µË´Ï´Ù.
ÀÌ¿¡ ´ëÇÑ ÇØ°á ¹æ¹ýÀ¸·Î ¼ºñ½º¸¦ ÀÌ¿ëÇÏ¿© ¾²·¹µå¸¦ µ¹·Áº¸¾Ò½À´Ï´Ù.
À̶§´Â ¼ºñ½º ÀÚü°¡ destroyµÇ°í ¼ºñ½ºÀÚü°¡ ÇϳªÀÇ ½º·¹µå¿µ¿ªÀ» °®°Ô µÇ¹Ç·Î
Á¤»óÀûÀ¸·Î ÀÛµ¿Çϴ°ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
¹®Á¦´Â mainActivityºÎºÐ¿¡¼ Àú°ÍÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù´Âµ¥¿¡ ÀÖ½À´Ï´Ù.
getNameÀ» Çغ¸¾ÒÀ¸³ª, ÀڽĽº·¹µå·Î »ý¼ºÇغ¸¾Æµµ getName()Àº main
À» ¸®ÅÏÇÏ¿´½À´Ï´Ù.
Ȥ½Ã ½º·¹µå¸¦ »ç¿ëÇϽôٰ¡ À§¿Í °°Àº ¹®Á¦¸¦ ¹ß°ßÇϽðí ÇØ°áÇÏ´Â ¹æ¹ýÀ» ¾Ë°í °è½Ã´ÂºÐ
°è½Ã´ÂÁö¿ä?
¹®Á¦¿¡¼ ¿ä±¸µÇ´Â °ÍÀº
Çѹø ¿ÏÀüÈ÷ ½ÇÇàµÇ°í Á¾·áµÈ Thread¿¡¼ NotRunnable »óÅÂÀÇ wait(Time)ÀÌ
´Ù½Ã ÇØ´ç ½º·¹µå¸¦ ½ÃÀÛ½Ãų¶§ wait(Time)µÈ »óÅ°¡ ŸÀÓ ¾Æ¿ôµÇÁö ¾Ê°í Á¤»óÀûÀ¸·Î
ÀÛµ¿ÇÏ°ÔÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
¾Æ¹°·Ð notify()¿Í notifyAll()¸ðµÎ »ç¿ëÇغ¸¾ÒÀ¸³ª ÀüÇô Á¦±â´ÉÀ» ¸øÇÕ´Ï´Ù.
* ±ÛÀ» µî·ÏÇϽǶ§ ²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¸é °³ÀÎÁ¤º¸¸¦ ³²±âÁö ¸¶¼¼¿ä ^^ (¿¬¶ôó,À̸ÞÀÏÁÖ¼Ò,Áֹεî·Ï¹øÈ£ µî)