[英]How can I stop the server thread(and may activate it later)?
我正在創建一個多線程服務器,該服務器將從客戶端接收消息,處理並發送回結果。
問題是當我希望服務器線程停止時,它不會停止。
即使設置stopFlag=true
,客戶端仍然可以連接到服務器並獲取結果。
如何停止服務器線程(以后可能會激活它)?
我在下面嘗試了所有這些方法,但是它們沒有起作用。
關閉監聽ServerSocket http://tutorials.jenkov.com/java-multithreaded-servers/multithreaded-server.html
public class ServerStart implements Runnable{
private JTextArea servLog;
private boolean stopFlag=false;
public ServerStart(JTextArea servLog){
this.servLog=servLog;
}
public void setStopFlag(boolean stop){
stopFlag=stop;
}
@Override
public void run() {
int port=444;
try {
ServerSocket serverSock = new ServerSocket(port);
synchronized(this){
while(!stopFlag){
Socket clientSock=null;
try{
clientSock = serverSock.accept();
}catch(IOException e){
if(stopFlag){
System.out.println("Server stop");
return;
}
throw new RuntimeException("Error accepting client connection", e);
}
Thread listener = new Thread(new Socket_test(clientSock, port,servLog));
listener.start();
}
serverSock.close();
}
} catch (IOException ex) {
Logger.getLogger(ServerStart.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.