JCIP中的第5章-
唯一可以接受中断的情况是在扩展Thread时,因此控制所有代码调用堆栈的更高层。
请用粗体字详细说明这个部分。怎样
在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不行。