【JDK】资源自动关闭接口AutoCloseable的使用

       AutoCloseable主要是用于日后进行资源开发的处理上,以实现资源的自动关闭(释放资源),例如:在以后进行文件、网络、数据库开发的过程之中由于服务器的资源有限,所以使用之后一定要关闭资源,这样才可以被更多的使用者所使用

       下面为了更好的说明资源的问题,将通过一个消息的发送处理来完成。

//常规方法实现资源关闭
public class _28 {
    public static void main(String[] args) {
        IMessage nm = new IMessage("tangxz.jiagoushi");//定义要发送的数据
        if (nm.open()){//是否打开了连接
            nm.send();//消息发送
        }
    }
}

class IMessage {
    private String msg;

    public IMessage(String msg) {
        this.msg = msg;
    }

    public boolean open() {//获取资源链接
        System.out.println("【OPEN】获取消息发送连接资源。");
        return true;
    }

    public void close() {
        System.out.println("【CLOSE】关闭消息发送通道");
    }

    public void send() {
        if (this.open()) {
            System.out.println("【*** 发送消息 ***】" + this.msg);
        }
    }
}

       既然所有的资源完成处理之后都必须进行关闭操作,那么能否实现一种自动关闭的功能呢?,JDK1.7的时候提供的AutoCloseable接口,该接口只提供一个方法close()。

  • 关闭方法:public void close() throws Exception;

    ​ 要想实现自动关闭,除了要使用AutoCloseable之外,还需要结合有异常处理语句才可以完成。

//AutoCloseable实现资源关闭
public class _28_2 {
    public static void main(String[] args) {
        try(IMessage2 nm = new IMessage2("www.mldn.cn")){
            nm.send();
        }catch (Exception e){}
    }
}

class IMessage2  implements AutoCloseable {
    private String msg;

    public IMessage2(String msg) {
        this.msg = msg;
    }

    public boolean open() {//获取资源链接
        System.out.println("【OPEN】获取消息发送连接资源。");
        return true;
    }

    @Override
    public void close() {
        System.out.println("【CLOSE】关闭消息发送通道");
    }

    public void send() {
        if (this.open()) {
            System.out.println("【*** 发送消息 ***】" + this.msg);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值