为了账号安全,请及时绑定邮箱和手机立即绑定

不通过多线程 似乎也能完成多客户端请求

如果不用线程 直接在Server 类中加入while死循环同样是达到多客户端请求的效果啊!

正在回答

3 回答

提到多线程,往往还会想起另一个词:并发。前者是手段,后者是目的。

并发,顾名思义指同时发生,这里这个问题我所知只有多线程能解决。题主所提出的猜想咋一看似乎可行,实则不然。假如我们将讲师的代码改一改,将服务端给客户端发的消息改成用户在控制台输入,然后再发给客户端,而客户端也类似于此修改。修改之后按照题主的猜想,假设第一个客户端连上服务端后,用户不往控制台输入内容,那么客户端和服务端程序就会卡(阻塞)在相应的这一行,直到用户往里输入内容并以回车结束后才会继续执行程序。

这此期间,服务端一直停着,试问如何分身去响应第二、第三……,甚至更多用户的申请呢?

多线程的并发,只要没有公用同一资源,相互之间独立运行、互不影响。讲个类比的故事。

沙僧要去流沙河做无本买卖,可一个人没胆量去就来求大师兄,于是大师兄就拔了一根毛一吹,变成一个分身陪沙僧去了;八戒要去高老庄强媳妇儿,可一个人抢不赢就来求大师兄,于是大师兄就拔了一根毛一吹,变成另一个分身陪八戒去了;……

这个故事里的大师兄就好好比是服务端,它负责等待各路鬼神来求他办事儿,并变出一个个相互独立、互不影响的分身去帮各路妖精干各自的事情。吹毛变分身的是大师兄,就好比是循环等待并处理申请的线程启动类;办事儿的是分身,就好比一个个被线程启动类启动的线程。

p.s. 不知道这个一时随想的类比例子是否贴切,容易理解?

4 回复 有任何疑惑可以回复我~

给楼上+1

0 回复 有任何疑惑可以回复我~

线程的好处在于同时进行不延迟,

加个while:第一个客户端响应完,执行完第二个才可以进入,也就是同一时间只能响应一个

利用线程 :可以同时执行serversocket.start(),即同时响应多个

2 回复 有任何疑惑可以回复我~
#1

花黑暗里开放

正解!
2016-05-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

不通过多线程 似乎也能完成多客户端请求

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号