java finally一定会执行吗?
1.答案是不一定,而且很容易弄出不执行的情况;
最简单的:在IDEA上执行:
try {
log("aaa");
Thread.sleep(10000);
log("bbbb");
} catch(Exception e) {
log("ddd");
} finally{
log("eee");
}
在打印了aaa后点击红色方框停止按钮,会发现应用就停止了,然后没有继续打印其他的;
而这个进程进行kill -9 $pid也会导致强制关闭java进程,然后finally块不会执行;
所以finally在重启应用时是很常见的,finally不会执行;
比如容器应用重启,肯定不会一直等你,很多时候就是强制重启的;
因此涉及到分布式锁依赖finally来处理逻辑的,处理状态数据的,一定要考虑好finally没有执行的情况;
posted on 2023-11-21 14:17 Silentdoer 阅读(154) 评论(0) 编辑 收藏 举报