여지껏 골치를 썩혀왔던 문제이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try {
    try
    {
        while(!Thread.curruntThread.isInturrupt)
        {
        ..... 
        }    
    catch(InterruptedException e)
    {
 
    }
}
 
finally
{
 
}

cs


이 코드와 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try {
    try
    {
        while(!Thread.curruntThread.isInturrupt)
        {
        ..... 
        }    
    }
}
catch(InterruptedException e)
{
 
}    
finally
{
 
}
cs


이 코드의 차이가  어마어마 하다 . 


윗 코드는 Thread가 sleep에 들어갈 경우 "sleep 중에 Interrup 했다!" 라는 Error를 띄우지만 


아래 코드는 "Thread를 오류가 나도 죽일게! "라는 코드이다.



많은 블로그에서 이 부분에 관해 포스트를 하셧지만 


결정적인 실수는 Catch의 위치에 따라 멈추냐 안멈추냐 차이이다. (이상동작도 발생한다)



참고 : http://javafreak.tistory.com/210 

+ Recent posts