退出无限循环需要什么条件?

时间:2013-03-25 09:45:31

标签: java

我曾尝试编写服务器端应用程序。从学校开始,我倾向于不要让代码无限循环。但是,在我的服务器端应用程序中,我还没有找到在什么条件下我应该从无限循环中退出的方式。代码

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();
}

7 个答案:

答案 0 :(得分:5)

通常在服务器上关闭JVM时退出循环。或者抛出异常但没有捕获。这是无限循环合理的一种情况。如果一切顺利,你的服务器将永远存在。

答案 1 :(得分:4)

使用boolean标记,您可以在循环内部或外部的某个位置设置为false

boolean started = true;
while (started) {
  ...
}

答案 2 :(得分:4)

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

如果有某些命令或条件,当服务器终止时,只需这样做

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

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

    if (condition)
       break;
}

甚至更好

while (!condition) {
...
}

答案 3 :(得分:3)

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

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

然后当你想让程序终止时你只需要将标志设置为tru并等待(这是为了优雅终止)

答案 4 :(得分:2)

您的while语句总是会评估为true,因为您传递了值true而不是使用任何条件

答案 5 :(得分:1)

你可以这样做:

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

在PHP中,不确定它是否在java中有效,我们可以

while(true)
{
//do stuff
break;
}

答案 6 :(得分:0)

Use a boolean flag.

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

if(condition)   //condition to exit loop
{
flag=false;
}
}