java socket read 堵塞问题的解决方法

2023年4月11日13:07:42

最近在学socket的网络编程,但遇到了一点问题,就是每次循环从缓冲区读数据时,如果缓冲区没有数据,这时候read方法会堵塞,此时也没有办法输入了。后来发现了主要有两种解决方法:

  1. 在消息开头标记消息长度
  2. 新启动一个线程进行读操作,阻塞就阻塞吧,反正读写没在一个线程(也算某种意义的读写分离)

这是最初会阻塞的代码
java socket read 堵塞问题的解决方法
后来就用了读写分离
java socket read 堵塞问题的解决方法

class read implements Runnable{

    BufferedReader bufferedReader;

    read(BufferedReader bufferedReader){
        this.bufferedReader = bufferedReader;
    }

    @SneakyThrows
    @Override
    public void run() {
        String info;
        while((info = bufferedReader.readLine())!=null){
            System.out.println(info);
        }
    }
}

就解决了堵塞

  • 作者:旺财_is_coming
  • 原文链接:https://blog.csdn.net/weixin_43919032/article/details/121758783
    更新时间:2023年4月11日13:07:42 ,共 419 字。