一个服务器的程序,开始运行后,不知道如何让其结束
class ServerSubThread extends Thread {
public void run() { //启动线程的入口方法
hsd.startProvidingService(); //服务器将出于监听状态,此函数内部会产生新的线程。hsd是一个类的对象。
}
}我也尝试过网上的方法设置一个符号变量,在run方法中设置while循环,当结束时设置符号变量为假。
但是程序执行到startProvidingService()时,程序出于监听状态,不会继续向下执行,这个ServerSubThread线程会一直停留在startProvidingService()语句处,所以我认为这个方法行不通。我想把ServerSubThread线程和startProvidingService()内部产生的线程全部结束掉,请问大家有没有什么合适的办法?
多谢大家!
class ServerSubThread extends Thread {
public void run() { //启动线程的入口方法
hsd.startProvidingService(); //服务器将出于监听状态,此函数内部会产生新的线程。hsd是一个类的对象。
}
}我也尝试过网上的方法设置一个符号变量,在run方法中设置while循环,当结束时设置符号变量为假。
但是程序执行到startProvidingService()时,程序出于监听状态,不会继续向下执行,这个ServerSubThread线程会一直停留在startProvidingService()语句处,所以我认为这个方法行不通。我想把ServerSubThread线程和startProvidingService()内部产生的线程全部结束掉,请问大家有没有什么合适的办法?
多谢大家!
解决方案 »
- java 连接sqlserver 2000出现的问题,我已经查阅了许多资料,但仍不得其解,在线等解
- 请教:如何去小数点前两位,并四舍五入
- if-else的简写怎么写?
- 请教高手,如何获取其他网站页面的源代码,非常感谢哦~~~
- 有没有办法加快Java数据库应用client端的数据显示呢?
- 大伙都用的什么开发工具啊?SDK?Jbuilder?
- 如何实现鼠标靠近Rectangle边界时形状变为双向的箭头
- Dialog的问题。。
- 怎么在APPLET里实现当按网页的按钮时弹出一个FRAME.
- 关于命令参数的个数??
- jsp问题,问检索与文件关联
- 请教 C:\java\BaseMath.java:10: 找不到符号
ServerSubThread sst = new ServerSubThread ();
sst.start();
sst.interrupt();
但是这种方法不是很提倡 呵呵
flag设置的方法可以考虑下。
其它的方法还不知道。
public start(){
sst.start();
}
public stop(){
sst.interrupt();
}
没有起到效果,当stop函数执行后,服务器仍能相应来自客户端的连接。
我做了个界面,有个"stop service"按钮,点击后,事件响应,执行stop函数,想法是让服务器停止工作,把服务器的线程全部结束掉。
谢谢大家!
大致情况如下:
while(flg){...
}然后写个方法来设置flg的值
stop()
{
flg = false;
}
其他的方法不推荐。
我漏写了,是 public void start(){} 漏写了void。
http://topic.csdn.net/t/20060918/16/5030127.html 说interrupt后也没有停止运行。
我试着调用sst.stop()方法,效果不理想。
你再帮我看看,谢谢了!
谢谢了先!
我认为是这样,因为hsd.startProvidingService() 会出于监听状态,所以在while第一次执行时,程序会停在此处,以至于通过stop把flag设为假时,第一次while也没有执行完,所以通过设为假,没有起到效果。
class ServerSubThread extends Thread {
public void run() { //启动线程的入口方法
while(flag){
hsd.startProvidingService(); // 程序会停于此处,监听,不会往下执行
}
}
}
public void startProvidingService() {
ServerSocket ss = null;
ss = new ServerSocket(this.port);
..................................
Processor processor = null;
processor = hl7server.accept(null); //一直等待来自客户端的连接,只有连接上后,才会向下执行
hl7server.start(null); //连接上后,开始运行,等待客户端需求,并服务
}
我想停止ServerSubThread线程,并把它调用startProvidingService函数内部accept和start产生的线程一并停止。谢谢大家!
怎么显示关闭socket通信?我不会,请指教,谢谢了!
os.close();
is.close();
socket.close();
如果你是用别人封装好的包,看看人家的api。一定有关闭的操作。