各位大哥,请教一个多线程的问题!!!!!!!!!

lozoy 2007-12-04 11:12:30
问题是一个聊天的软件,正常退出没有问题,但是如果客户端突然断电了之后,服务器捕获不到这个线程已经退出,请问该如何解决 ,正常的时候走进while (true)了 ,但是不知道和while (true) 对应的是什么 IF ELSE 也不对 希望各位大哥帮忙
部分代码如下,就是想要请教和WHILE(TRUE)对应的是什么??
谢谢
---------------------------------------------------------------
public void run() {
while (true) {
String line = null;
try {
line = reader.readLine(); //读取数据流
MqqServer.guang.append("客户发送的消息:" + line + "\n");
} catch (IOException ex) {

timer.cancel();
ConnectDB cDB = new ConnectDB(odb, todb, dbuserO,
dbpasswordO, name, mima, touxiang);
cDB.tuiChu();
cDB.dicDB();
MqqServer.guang.append(ex.toString());
MqqServer.disconnect(this); //断开连接
MqqServer.notifyChatRoom(); //更新信息
return;
}

if (line == null) { //客户离开
timer.cancel();
MqqServer.guang.append("客户离开\n");
MqqServer.disconnect(this);
MqqServer.notifyChatRoom();
return;
}
}
}
}
...全文
61 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lozoy 2007-12-04
  • 打赏
  • 举报
回复
哦 了解 以前考虑过这么实现 谢谢你
我在研究研究线程的运行周期看看可以判断不 呵呵
jinxfei 2007-12-04
  • 打赏
  • 举报
回复
实际上就是定期向客户端发送一个消息,要求客户端再反馈回来。
lozoy 2007-12-04
  • 打赏
  • 举报
回复
现在的问题出现在如果真的是断电了以后,那个线程好像就不会走进WHERE TRUE了
我向请问下1楼的大哥 如何通过与客户端之间发送心跳信号来决定客户端是否还在
zjucoco 2007-12-04
  • 打赏
  • 举报
回复
while换成if就不循环了,同意1楼的说法,在while中增加一些判断措施
jammychen 2007-12-04
  • 打赏
  • 举报
回复
while没有对应的吧
while不是条件选择语句

把while换成if
jinxfei 2007-12-04
  • 打赏
  • 举报
回复
通过与客户端之间发送心跳信号来决定客户端是否还在。
另外,在客户端断掉一段时间后,服务器端也会超时。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧