关闭流的问题

来源:3-5 使用多线程实现多客户端的通信

L雨泽

2017-04-05 19:39

if(socket != null)
   socket.close();
   既然不为空,为什么还要关闭?


写回答 关注

3回答

  • Navy_D
    2017-04-05 21:00:44
    已采纳

    没有上下文的代码只能猜测,强答一发。socket.close()这个方法调用是需要具体的对象的如Socket socket = new Socket(8888);如果没有对象只有引用,那么就会初始化为null,在null这个无意义的数据上是无法产生有意义的结果的。有点偏题。。。。socket如果不为空,那么一定有一个Socket对象被打开,当使用完后资源没有close就会占用资源,可能造成别的程序无法访问资源。。。但是这个if是感觉没必要的,在null上调用close是没有意义的,个人见解,欢迎指教

    慕少7573...

    不对吧,你这样回答,你可以尝试为空时候的异常。

    2017-09-28 16:11:56

    共 2 条回复 >

  • 慕少7573967
    2017-09-28 16:09:51

    当为空的关闭时会出现异常,你自己可以尝试下的。当为空的时候,代表未成功创建

  • 二月十三
    2017-04-05 21:11:52
    我的理解是socket 不为空说明有内容,当socket关闭的时候,输入输出流也会跟着关闭,借鉴学缓冲流时的缓冲输入流在关闭的时候会将所有缓冲区的数据全部写入文件,当输入输出流关闭的时候,内存中相应的数据才会得到处理?我也不知道对不对?求指教

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题