finally 不会执行的情况

 在 Java 中,finally 有没有可能不会执行的,试看看下面的情况

Java代码

  1.     public class TestFinally {   
  2.     private static class DaemonThread extends Thread {   
  3.         @Override  
  4.         public void run() {   
  5.             try {   
  6.                 TimeUnit.MILLISECONDS.sleep(1000);   
  7.             } catch (InterruptedException e) {   
  8.                 e.printStackTrace();   
  9.             } finally {   
  10.                 System.out.println("In finally");   
  11.             }   
  12.         }   
  13.     }   
  14.        
  15.     public static void main(String args[]) {   
  16.         DaemonThread daemon = new DaemonThread();   
  17.         daemon.setDaemon(true);   
  18.         daemon.start();   
  19.     }   
  20. }

运行结果并没有打印"in finally",因为在主线程结束时,后台线程同样被结束掉,finally没有机会执行。

时间: 2024-10-25 13:12:14

finally 不会执行的情况的相关文章

ASP.net 页面被关闭后,服务器端是否仍然执行中?

问题:当一个正在执行中的ASPX页面执行到一半的时候,浏览器中你关闭了这个页面,服务器端对应的这个页面的代码仍然在执行么? 答案:除非你代码里面做了特殊判断,否则仍然正在执行. 注意点: 1.客户端显示页面的时候,后台已经执行完了的页面对象早已经不存在了.当然这时候谈不上服务器段执行不执行的问题了. 2.页面还没有返回,处于等待状态的时候.关闭ASPX页面,才会涉及到上面提到的服务器端仍然在执行的情况. 3.客户端关闭的时候根本不向服务器发送指令. 4.除非你代码里面做了特殊判断,这里的特殊判断

用jamon来监控你的sql执行效率

/** *作者:张荣华 *日期:2008-2-25 **/ 之前有一篇文章讲到如何使用jamon来监控请求以及方法得调用(原文地址见:[url]http://www.iteye.com/post/354575 [/url]),本文属于其姊妹篇,使用jamon监控系统的sql调用及其调用效率. 需求: 1我们知道在使用hibernate得时候,我们可以打开show sql选项,可以直接查看sql语句调用的情况,那么当我们使用其他持久技术的时候我们也需要这个功能怎么办呢,没有关系,jamon能够帮我

innerHTML在Firefox和Opera下的执行特例

执行 是在CSDN论坛看到的一个问题,平常我也没有注意,或者说没有这样用吧.看代码: 以下是引用片段: <body id="www.never-online.net">  <script>  var foo = function() {  var $ = function() { return document.getElementById(arguments[0]); }  $("d2").innerHTML = $("d1&qu

详细讲解Linux系统Iptables规则执行顺序

预备知识(转): iptable有三种队列(表)规则,mangle queue, filter queue, nat queue. 1.The first is the mangle table which is responsible for the alteration of quality of service bits in the TCP header. 2.The second table is the filter queue which is responsible for pa

SQL Server中使用REVERT切换存储过程执行上下文

问题 以前,我们学习过在SQL Server 2005中用EXECUTE AS命令来授予权限的方法,你已经看到如何用EXECUTE AS从句来授予粒度权限.在一个可编程的对象比如存储过程或函数内切换上下文是很重要的,尤其是如果访问存储过程的用户没有足够的权限去运行一个代码块时.但为了把它更加粒度化,只有在需要的时候和返回到调用方的原来的执行上下文情况下,我们才允许切换执行上下文.我们要怎么实现这一点? 专家解答 SQL Server 2005中的EXECUTE AS从句让我们拥有控制代码模块执行

U盘自动执行病毒的清除方法

  你的电脑是否会经常遇到"快捷方式"自动执行的情况,它可以使U 盘.移动硬盘以及手机等USB设备成为病毒的传播通道,只要一查即可中毒.现在就为大家总结一下关于该病毒的手工解决办法,按此方法,可以有效的预防你感染"快捷方式自动执行"木马. 一.Disable the displaying of icons for shortcuts(禁止显示ICO,这种方案貌似会导致你的很多的图标都显示白板,不推荐) 方法:一次运行"开始-运行",输入reged

大数据环境下的地税预算执行审计

看起来纷繁复杂的海量数据资料,通过分析,可以发现很多有用的信息,可以告诉我们很多隐藏在数字背后的秘密,并有效提高决策的准确性.淘宝根据购物记录可以推荐买家可能会喜欢的商品,餐厅根据用餐记录可以推荐消费者可能喜欢的菜单.大数据审计分析可以通过对相关领域长年累月形成的数据的分析,挖掘出某种群体行为的特点,提示某种社会现象的潜在规律,为政府制定政策提供关键依据,同时还可以评估政府政策的实施效果,从而帮助政府不断发现问题,改进问题.下面笔者结合自己从事的地税审计业务浅谈在大数据审计分析中的心得体会,以达

Java异常及异常块执行次序(try、catch、finally、return)

Java异常: ①使用try-catch-finally处理异常: ②使用throw.throws抛出异常: ③上边为java异常处理5个关键字. 异常是程序在设计时或运行时产生的错误,异常处理是处理异常的过程,一旦异常被处理后,异常就不存在了,因此程序就可以继续运行了.如果异常不被处理,程序就会被强制终止(终止出现异常的业务代码执行). 在程序运行中,程序的try.catch.finally.return执行次序,就要进行考虑了. ①:捕获异常 try{ //执行可能产生异常的代码 }catc

执行计划的重用

原文:执行计划的重用 当查询被提交时,SQL Server检查过程缓冲中匹配的执行计划,如果没有找到,SQL Server执行查询编译和优化以生成新的执行计划. 如果执行计划存在于缓冲中,它在私有的执行上下文中重用,这节约了CPU的编译和优化周期. 具有不同过滤条件的相同查询提交到SQL Server时,如: SELECT * FROM Person WHERE Id = 1 当这个查询被提交时,优化器创建一个执行计划并将其存储在过程缓冲中以被将来重用.如果这个查询使用不同的过滤条件,如:WHE