private class StopServer extends Thread
{
public void start()
{
this.setDaemon(true);
super.start() ;
}
@Override
public void run() {
ServerSocket serverSocket = null ;
Socket socket = null ;
try {
serverSocket = new ServerSocket(8001) ;
while (true) {
socket = serverSocket.accept();
String line = new BufferedReader(new InputStreamReader(socket.getInputStream())).readLine();
if (line.equals("shutdown"))
{
socket.getOutputStream().write("ok, start stop the server....\r\n".getBytes());
socket.getOutputStream().flush() ;
System.out.println("start a new thread to stop the server....") ;
//新创建的子线程
new Thread() {
public void start() {
setDaemon(true);
super.run();
}
public void run() {
System.out.println("start stopServer Thread...");
EchoServer2.this.stop();
}
}.start();
break ;
} else
{
if (!socket.isClosed())
socket.close();
}
}
}
catch (IOException e)
{
System.err.println("daemon thread exception: " + e);
e.printStackTrace();
}
finally {
System.out.println("stop stopServer...");
if(serverSocket != null && !serverSocket.isClosed())
try
{
serverSocket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
if(socket != null && !socket.isClosed())
try {
socket.close();
}catch (IOException e)
{
e.printStackTrace() ;
}
}
}
}
Il s'agit d'un fil de discussion en arrière-plan d'un serveur que j'ai écrit hier. Ce fil est principalement utilisé pour surveiller le port 8001. Si une commande d'arrêt est reçue, le serveur sera arrêté. Après avoir arrêté le serveur, j'ai démarré un nouveau fil. , c'est-à-dire que lorsque le sous-thread du thread d'arrière-plan est réellement en cours d'exécution, le serveur n'est pas arrêté, donc je juge que le sous-thread mourra avec l'ensemble du thread d'arrière-plan. Il semble que le système d'exploitation doive lire. encore le livre. Désolé de déranger tout le monde
Il s'agit d'un fil de discussion en arrière-plan d'un serveur que j'ai écrit hier. Ce fil est principalement utilisé pour surveiller le port 8001. Si une commande d'arrêt est reçue, le serveur sera arrêté. Après avoir arrêté le serveur, j'ai démarré un nouveau fil. , c'est-à-dire que lorsque le sous-thread du thread d'arrière-plan est réellement en cours d'exécution, le serveur n'est pas arrêté, donc je juge que le sous-thread mourra avec l'ensemble du thread d'arrière-plan. Il semble que le système d'exploitation doive lire. encore le livre. Désolé de déranger tout le monde
Parce que c'est Démon