java 服务器多线程管理。有多个客户发出连接和断开请求,如何管理服务器的这些线程呢?
就像QQ似的,客户登陆时向服务器发出登陆请求,服务器会把该好友上线的消息发给其好友客户,客户下线时服务器也要断开连接并发给其好友,这种情况的线程是怎么管理,如何实现呢?...
就像QQ似的,客户登陆时向服务器发出登陆请求,服务器会把该好友上线的消息发给其好友客户,客户下线时服务器也要断开连接并发给其好友,这种情况的线程是怎么管理,如何实现呢?
展开
3个回答
展开全部
原理是这样的,服务器端有一个客户端管理器,负责管理所有连接进来的客户端,另外还需要为这个客户端管理器注册一个监听器,监听客户端的连接与断开两个动作,有客户端连接进来,就会触发监听器,监听器获取该客户端的在线好友列表,向在线的好友推送上线提醒消息,客户端断开时,也会出发监听器,监听器获取该客户端的在线好友列表,向在线的好友推送下线提醒消息
更多追问追答
追问
这个监听器的概念不错,不过这个管理器能具体说下,不知道这里面的线程如何管理,因为上线时创建个,下线时又要关闭,但还要给所有链接这的线程发消息。。。谢谢啦!
追答
你能想到反复的创建和销毁线程,这个时候,你就可以想想数据库连接池、线程池的概念了,客户端就不说了,服务器端是可以对资源优化的,至于你说的给所有链接这的线程发消息是不对的,咱们写java程序不可能到那么底层的,到不了线程通讯这一层,我们是在面向对象编程,服务器端管理的客户端对象肯定要有处理消息的能力,对象之间通讯没得问题的
2013-05-22
展开全部
“客户下线时服务器也要断开连接并发给其好友”
除了这个处理,别的不需要处理
除了这个处理,别的不需要处理
追问
客户上线时也要发消息吧,很多用户连接断开,服务器也就要创建关闭,感觉这个过程挺繁琐的,能提供下思路吗?谢谢了!另外QQ服务器也是类似的机制吗,那得多少线程啊
追答
连接是不用管的,只是做你必需处理的事情,如上线提醒、下线提醒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得.可能还有种思路...就是每个客户端都是一个服务端.你发信息给好友时,好友的机器就相当于服务端,好友发你时,你的就相当于是服务端..这样子.
追问
还有,监听器的实现能给些提示吗,因为每个Client连接要new 一个ClientRequestAbs,当一个Client断开时,监听器怎么得到这个消息,并在ClientRequestAbs做出反应呢?
细想又有点晕了。。。麻烦了啊!刚才字数受限了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |