zoukankan      html  css  js  c++  java
  • Java中如何通过try优雅地释放资源?

    时间紧迫,长话短说,今天,小明给大家同步一个知识点,使用try-with-resources来优雅地关闭资源。

    1. 背景

    其实,在JDK 7就已经引入了对try-with-resources的支持,它的主要作用就是解放小明和小明小伙伴们的双手,帮助我们自动释放使用过的资源(比如输入、输出流)。

    2. 例子

    如何才能使用这个自动关闭资源的骚操作呢?我们只需要在try内声明和初始化资源即可,如下所示:

    这样,当我们写入文件时,只需要将心思放在输入的内容就行啦。

    3.使用try-with-resources的好处

    在很久很久以前,你是不是和小明一样每每操作输入流、输出流的时候,用的都是try-catch-finally代码块?

    现在,答应我好嘛,作为小明的小伙伴,看完这篇文章后,再写代码时,不要再将就,务必使用try-with-resources会更小明(优雅)一些。

    接下来,我们简单地做个比较:

    之前的小明

    点评

    整体感觉很传统,很冗长。

    现在的小明

    点评

    整体感觉很轻巧,很优雅。

    4. 还可以控制多个资源哦

    如果我们想一边控制输入、一边控制输出怎么办?

    通通放进去!如图所示

    5.幕后功臣:Closeable

    为什么把资源放进try-with-resources,我们就可以束手旁观,高枕无忧呢?原来,要想合法进去try-with-resources,不被报警,是需要门票的:实现CloseableAutoCloseable接口,并重写close方法。就像这样:

    6.多个资源的情况下如何顺序关闭呢?

    剧透:先创建的资源,最后关闭。

    这个故事是这样讲的:小明和小红一起打王者荣耀……

    小明:

    小红:

    全军出击:

    故事纵览:

    提问:结局是不是和剧透一致?

    7. 补充

    我们使用try-with-resources的时候不仅可以优雅地释放资源,而且还可以传统一些,照常使用catchfinally哦。

    8. 总结

    经过小明这么一番生动的讲解:

    你是否知道了什么是try-with-resources

    你是否知道了如何用try-with-resources替换try-catch-finally

    你是否知道了AutoCloseable构建自定义资源以及关闭资源的顺序?

    附Github源码地址:https://github.com/WhenCoding/coder-xiaoming

  • 相关阅读:
    python写泰勒展开式
    8.QR分解的python实现
    7.Bolzmann机解决旅行商问题
    6.BP神经网络的python实现
    5.梯度寻优
    4.推荐系统
    4.决策树的探赜索隐
    BZOJ 1251 序列终结者
    BZOJ 3223 文艺平衡树 [codevs3303翻转区间]
    BZOJ 3224 普通平衡树
  • 原文地址:https://www.cnblogs.com/coderxx/p/12690161.html
Copyright © 2011-2022 走看看