Tôi có đoạn code sau
Code:
class IncrementalThread implements Runnable {
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.err.println("interrupt catched");
}
System.out.print("1 ");
System.out.print("2 ");
System.out.print("3 ");
System.out.print("4 ");
System.out.print("5 ");
System.out.print("6 ");
System.out.print("7 ");
System.out.print("8 ");
System.out.print("9 ");
System.out.println("10 ");
}
}
}
public class UseThread {
public static void main(String args[]) {
Thread t = new Thread(new IncrementalThread());
t.start();
for(int i=0;i<3;i++)
{
try
{
Thread.sleep(100);
t.interrupt();
}
catch(InterruptedException e){}
}
}
}
khi chạy cho ra kết quả
Code:
1 2 3 4 5 6 7 8 9 10
interrupt catched
1 2 interrupt catched (***)
3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
interrupt catched
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
.......
Vấn đề là ở dòng (***), theo tôi thì Exception phải xảy ra trong khối try.. catch chứ, tại sao ở ngoài rồi mà vẫn bắt Exception? xin mọi người giải thích dùm.