Java while(布尔值)此代码的工作方式



这是Udemy课程中的代码。

我不明白 boolean stop;在循环时如何工作。我看不到循环内stop的任何更改。

有人可以向我解释我在这种特殊情况下循环工作时如何工作。

package socket;
import java.io.*;
import java.net.*;

public class MultiUserService
{
    public static void main(String [] args) //throws Exception
    {
        try
        {
            ServerSocket serverSocket = new ServerSocket(9090);
            System.out.println("wainting for clients...");
            boolean stop = false;
            while(!stop)
            {
                Socket socket = serverSocket.accept();
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                out.println("Hello  client!");
                BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String clientInput = input.readLine();
                System.out.println(clientInput);
                input.close();
                out.close();
                socket.close();
            }
            serverSocket.close();
        } catch (Exception e)
        {
            System.out.println(e.toString());
        }
    }
}

的确,循环中没有stop的变化,这意味着循环永远不会停止,除非抛出例外。

由于它是服务器,聆听插座,这是一种预期的行为:服务器不断聆听和为客户端服务。

请注意,在生产代码中,应该有一种停止服务器的方法,根据方法,该服务器可能需要或不需要实际停止该循环(有一些异步方法(。

这就是要点;一旦启动,除非有什么问题,否则循环将不会停止。

相关内容

最新更新