0

我试图编写服务器端应用程序。从学校开始,我就认为我不应该让代码进行无限循环。但是,在我的服务器端应用程序中,我还没有找到在什么情况下应该退出无限循环的方法。编码

ServerSocket s = null;
s = new ServerSocket(5000 , 10);

Socket connection = null;
while(true)
{
    connection = s.accept();

    //create new thread to handle client
    new client_handler(connection).start();
}
4

7 回答 7

5

当 JVM 在服务器上关闭时,您通常会退出循环。或者当抛出异常但未被捕获时。这是无限循环合理的一种情况。如果一切顺利,您的服务器将永远启动。

于 2013-03-25T09:48:06.063 回答
4

使用boolean可以false在循环内部或外部的某个点设置的标志。

boolean started = true;
while (started) {
  ...
}
于 2013-03-25T09:47:00.380 回答
4

如果服务器应该无限期地运行并接受连接,则无需退出循环。

如果有一些命令或条件,当服务器应该终止时,就这样做

while(true) {
    connection = s.accept();

    //create new thread to handle client
    new client_handler(connection).start();

    if (condition)
       break;
}

甚至更好

while (!condition) {
...
}
于 2013-03-25T09:48:27.923 回答
3

通常对于这些应用程序,您使用一些标志来表示终止,如下所示:

private volatile boolean shouldDie = false; //thevolatile bit is important
...
while (!shouldDie) {
   //do some work
}

然后当您希望程序终止时,您只需将标志设置为 tru 并等待(这是为了优雅终止)

于 2013-03-25T09:47:56.417 回答
2

您的while陈述总是会评估为真,因为您已经传递了值true而不是使用任何条件

于 2013-03-25T09:47:18.847 回答
1

你总是可以这样做:

boolean loopCheck = true;
while(loopCheck)
{
//do stuff
loopCheck = false;
}

在 PHP 中,不确定它是否适用于 java,我们可以这样做

while(true)
{
//do stuff
break;
}
于 2013-03-25T09:49:09.017 回答
0
Use a boolean flag.

boolean flag=true;
while(flag)
{
// Your code here

if(condition)   //condition to exit loop
{
flag=false;
}
}
于 2013-03-25T10:02:49.063 回答