Sus*_*anW 16 java multithreading finally
我检查到该守护进程的JVM治疗线程经常重复的传闻finally
在一些特殊的方法块(他们不这样做,好吗?),当我读了这一点,从甲骨文的Java教程:
注意:如果JVM在执行
try
或catch
代码时退出,则该finally
块可能无法执行.同样,如果执行try
或catch
代码的线程被中断或终止,即使应用程序作为一个整体继续,该finally
块也可能不会执行.
(重点是我的.)关于打断的一点引起了我的注意!
我的信念是,如果一个线程在try/catch代码中并且被中断,那么我们要么(或最终进入)一个状态(例如睡眠,等待)我们最终投掷一个InterruptedException
,或者我们不是,我们正常或异常退出,但在所有情况下,我们都会遵守该finally
条款.
我错过了什么?finally
在应用程序继续运行时,是否真的有一种方法可以让线程被中断然后跳过a ?
Nat*_*hes 11
因为你特意询问守护程序线程:记住守护程序线程在jvm的最后一个非守护程序线程终止时消失,所以在这种情况下守护程序线程可以在没有执行finally块的情况下死掉(或者它将要执行的任何其他代码,没什么特别的最后块).当jvm终止时,不要将守护程序线程用于任何你不介意丢弃在地板上的东西.
否则,中断对快捷方式块没有任何作用.中断点是被中断的线程处于控制之中并且可以完成其执行,包括关闭资源,但是它需要.
这些教程非常有用,但它们不具有权威性.在这种情况下的措辞使用了中断这个词,在这种情况下,假设它特指线程中断是不正确的,这似乎是合理的.
归档时间: |
|
查看次数: |
289 次 |
最近记录: |