2016-10-10 86 views
0

第5章時吞嚥異常 -在JCIP擴展Thread

當你擴展Thread,因此上控制所有的代碼了 高於它是可以接受吞下一個中斷 唯一的情況是調用堆棧

請用粗體表示該部分。怎麼樣?

+0

你吞下了什麼?任何Exception或InterruptedException? –

回答

0

在Java上,每個線程都有自己的堆棧,並且調用一個方法添加一個新的框架。

您可以通過擴展Thread類創建自己的線程:

class MyThread extends Thread { 
    public void run() { 
     System.out.println("MyThread"); 

     // Interruption 1 
    } 
} 

和線程堆棧:

|堆棧|
| -------------- |
|運行|

或者,如果你寫了一個庫,不是由您創建調用您的庫外螺紋:

class MyLib { 
    public void doSomething() { 
     System.out.println("MyThread"); 

     // Interruption 2 
    } 
} 

內的外部螺紋:

... 
MyLib myLib = new MyLib(); 
myLib.doSomething(); 
... 

你的代碼被稱爲像上面。

在這種情況下

|堆棧|
| ------------------ |
|其他一些方法|
|其他一些方法|
|其他一些方法|
| doSomething |

而你沒有直接控制調用你的代碼的代碼。在調用堆棧中,更高的是some other method

吞嚥中斷1可以,但中斷2不可以。