finally关键字:和try块使用,一般做资源释放操作,比如关闭流、关闭数据库连接,释放锁。

return:用于返回值。

finally块可保证一定执行,当逻辑处理有返回值时,会首先执行finally再执行return返回值。看这个规律我们可以推断如下代码的执行顺序为:

test1

finally

     public static int test1(){
int i = 0;
try{
System.out.println("test1"); //
return i;
}finally {
System.out.println("finally"); //
}
}

再看如下代码执行顺序是怎样的

   public static int test1(){
int i = 0;
try{
System.out.println("test1"); //
}finally {
System.out.println("finally"); //
}
System.out.println("finally behind"); //
return i;
}

经过测试结果为 test1、 finally、 finally behind .

在测试该段代码之前根据我之前了解的判断执行顺序应该是132,这是错误的。所以我们需要注意这种写法的执行顺序。正确的结果是123。这一点在使用同步代码的时候一定要注意 。主要在finally中使用lock.unlock方法时,return要写在try中,避免return前已经释放锁,将数据暴露给了其它任务。

最新文章

  1. November 2nd Week 45th Wednesday 2016
  2. 前端构建:Less入了个门
  3. UVA11624Fire!(BFS)
  4. uva 11636
  5. Android-Activity使用(2)
  6. 使用AChartEngine第一步:在项目中配置AChartEngine环境
  7. MyEclipse+Android 安装配置
  8. C#控制台->>四则运算
  9. 网络编码 GB2312、GBK与UTF-8的区别
  10. VC6.0编译boost
  11. (贪心5.2.1)UVA 10026 Shoemaker's Problem(利用数据有序化来进行贪心选择)
  12. HDU_2014 青年歌手大奖赛_评委会打分
  13. 数据库系统——B+树索引
  14. AsyncTask实现下载图片
  15. JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换
  16. 如何给远程主机开启mysql远程登录权限
  17. MVCC的一些理解
  18. 几大时尚前端UI框架的IE支持
  19. sql语句的优先级
  20. MySQL:事务的隔离性

热门文章

  1. Entity Framework 6 学习笔记
  2. IP 转地址
  3. .NET使用js验证服务器控件
  4. PHP 注意问题
  5. .NET获取机器信息
  6. Android系统下的动态Dex加载与app速度优化
  7. 为你的网页中添加一些空格 
  8. sql注释
  9. c#结构体和字节数组的转换、字节数组和stream的转换
  10. Qt之QCustomPlot绘图(一)配置和第一个例子