请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

System.in.read()会一直阻塞,所以这里的while(true)循环可以去掉?

System.in.read()会一直阻塞,所以这里的while(true)循环可以去掉?

正在回答 回答被采纳积分+3

1回答

Stannum 2020-11-16 02:35:14

同学你好~这个问题提得好。我建议你先自己试一下去掉这个while循环,看一看和原先的代码在运行时有什么相同和不同之处~

0 回复 有任何疑惑可以回复我~
  • 答非所问,别人问你原因,你都不解释,还让别人自己试,弄得我有这个疑问时,也看不到正确答案,不知道你怎么想的,而且这个教程是不是烂尾了,看后面2022年很多同学的问题都没人解答
    回复 有任何疑惑可以回复我~ 2022-08-15 10:28:01
  • 看了9-2节,你说的那句话反复看了半天好像明白了,while循环是为了让服务器可以一直运行,因为会有其他客户端随时会加入,System.in.read()是为了让这个循环暂时阻塞住,当我们从客户端输入消息时,这个阻塞消失,这样accept()方法又可以重写被调用,因为键盘只要一输入这个阻塞就消失了,没有循环,start()方法就直接结束了,不知道有没有理解错。但是感觉好绕,这样故意设计出来的,真实生产环境也是这么写的嘛?我感觉这个教程主要还是入门例子,和生产实际联系的不够多,还得自己扩展深入,这个教程广度有了,深度远远不够,没有达到我的预期
    回复 有任何疑惑可以回复我~ 2022-08-15 10:39:32
  • System.in.read()的作用:其实就是想看到回调方法有没有被调用,这样达到异步的效果,主要这里没有其他任务了,所以加一个System.in.read()阻塞住。
    这里只是为了测试,实际上没有什么意义,因为就一个任务,同步通信就可以了。。。。反正就是练习用的,没实际意义
    回复 有任何疑惑可以回复我~ 2022-08-15 10:52:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信