如何在java的派生线程中杀掉守护进程

newkaka1981 2007-03-28 04:10:34
socket程序,在server中监听到client的连接以后派生出一个线程来通讯,然后server继续监听client的连接请求。main代码如下:

public class MyServer2_MultiUser extends Thread {

// ...

public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(5678);
while (true) {
// transfer location change Single User or Multi User
MyServer2_MultiUser mu = new MyServer2_MultiUser(server.accept());
mu.start();
}
}
}

现在我想在client中发送一个halt命令,当服务端的相关通讯线程接收到这个命令以后就立即中断连接,并且同时也停止派生出它的MyServer2_MultiUser进程。请问该如何做?
...全文
501 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuokai 2007-04-29
  • 打赏
  • 举报
回复
public class MyServer2_MultiUser extends Thread {

// ...
public static ServerSocket server ;// 全局,扩大作用域
public static void main(String[] args) throws IOException {
server = new ServerSocket(5678);
while (true) {
// transfer location change Single User or Multi User
if(server != null) //加额外判断
{
MyServer2_MultiUser mu = new MyServer2_MultiUser(server.accept());
mu.start();
}
}
}
}
.................
{
try{
MyServer2_MultiUser.server.close();
MyServer2_MultiUser.server = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
......................
newkaka1981 2007-04-29
  • 打赏
  • 举报
回复
谢谢楼上的两位,这样不行,因为接受命令是在派生线程中进行的,当派生线程在处理命令的时候,主线程已经停在
MyServer2_MultiUser mu = new MyServer2_MultiUser(server.accept());
这一句中等候新的连接了,所以除非一个新的连接接入,否则主线程没有机会做任何判断。


我感觉这里需要有一种主动的通知主线程的办法,就像accept监听客户端连接一样,主线程也需要有一种方法可以监听和处理来自子线程的通讯,我能想到的只有在主线程中开一个新的端口来监听子线程的通讯。除此以外还有没有其他什么办法呢?在这个地方有没有类似Windows中那样的消息相应机制可以使用呢?
lys888 2007-04-17
  • 打赏
  • 举报
回复
是否可以在类里面添加一个过程
public void threadStop(boolean isStop){
isStop = false;
}

这样可以增加一个判断,如果接收一个halt时,就可以通过设置标志isStop为false,实现杀掉派生线程的需求。

另外要在mu.start();前面加上break;结束主线程。
djlzxzy 2007-04-17
  • 打赏
  • 举报
回复
建议用数组或者ArrayList/Vector记录你在while循环里面的MyServer2_MultiUser实例,当接收到halt命令,用for循环从数组中取出记录的实例,逐个停止。
左大神在这 2007-03-31
  • 打赏
  • 举报
回复
顶,没有遇到过这类问题。

62,636

社区成员

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

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