最近在学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); } } }
就解决了堵塞
热门文章
- 2025年免费VPN推荐 | 3月27日18M/S|免费SSR/Clash/Shadowrocket/V2ray订阅节点地址
- 2025年免费VPN推荐 | 3月30日18M/S|免费Clash/V2ray/SSR/Shadowrocket订阅节点地址
- 2025年免费VPN推荐 | 4月9日20.8M/S|免费Shadowrocket/V2ray/Clash/SSR订阅节点地址
- 2025年免费VPN推荐 | 4月13日19.5M/S|免费Clash/SSR/Shadowrocket/V2ray订阅节点地址
- 猫不肯打疫苗会怎么样(猫不肯打疫苗怎么办)
- 动物疫苗厂家代理怎么做(动物疫苗厂家代理怎么做)
- 中国宠物粮食公司有哪些公司(中国宠物粮食公司有哪些公司招聘)
- 华农宠物医院哪个医生好(华农宠物医院哪个医生好一点)
- 哈尔滨猫狗宠物医院(哈尔滨猫狗宠物医院地址)
- 动物疫苗接种时间表格图片 动物疫苗接种时间表格图片大全