JCIP第5章 -
唯一可以接受中断的情况 当你扩展Thread并且因此控制所有代码 在呼叫堆栈上更高。
请用粗体详细说明。怎么样?
答案 0 :(得分: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不是。