你什么时候会在 Java 中写一个无限循环?
When would you write an infinite loop in Java?
无限循环在Java中有哪些实际应用?
例如:
while(true){
//statements, but the loop is never set to false
}
你什么时候可以用这个?
从某种意义上说是无限的,直到您希望它保持不变 运行。因此,在用户点击 "exit" 之前,保持 运行 一个程序。
在您的示例中,您需要在代码中添加一些最终会破坏它的内容。
if (this happens)
break
end
但是你也可以将布尔值而不是 counter < 1 放在 while 循环中。所以在你的例子中这是不好的做法。
program to guess age
initialize age
while (age != 20)
get guess from user
age = guess from user
end
如果您的工作是检查是否有任何工作需要完成,完成工作,然后永远重复,您可能会围绕该工作编写一个无限循环。编写无限循环的一种稍微更有效的方法是:
while (true) {
//do job
}
此类作业的示例可能包括轮换日志文件、copying/backing上传用户上传等。
我通常写的线程看起来像这样:
while(true) {
data = stream.read();
// process data
}
stream.read()
通常会挂起,直到提供数据为止。这只会不断读取、处理数据,然后等待更多数据。
在许多更高级别的应用程序中,while(true)
循环隐藏在较低的位置(特别是在基于事件的框架中)。例如,轮询硬件。在某处有一个 while(true)
或类似的结构。
简单的硬件通常只有两个功能:某种设置功能,然后是无限循环,在某些地方实际上称为 forever
。循环一直持续到硬件复位或关闭。
"Crash-only" 服务器进程通常是相同的。根据设计,阻止它们的唯一方法是相当于拔掉插头的软件。
我们可以使用无限循环来重复执行某些任务,直到用户想要退出。
while(true){
//perform some task
// value of flag changes in course of your program execution
if(flag){
break;
}
}
在您希望线程执行到应用程序生命周期的情况下,也可以使用无限循环。您可以将这些线程标记为 daemon thread.
过去,人们在编写 JMS 接收器时使用无限循环。但现在肯定是,spring+JMS 集成是首选。
import javax.jms.*;
import javax.naming.InitialContext;
public class MyReceiver {
public static void main(String[] args) {
try{
//1) Create and start connection
InitialContext ctx=new InitialContext();
QueueConnectionFactory f=(QueueConnectionFactory)ctx.lookup("myQueueConnectionFactory");
QueueConnection con=f.createQueueConnection();
con.start();
//2) create Queue session
QueueSession ses=con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
//3) get the Queue object
Queue t=(Queue)ctx.lookup("myQueue");
//4)create QueueReceiver
QueueReceiver receiver=ses.createReceiver(t);
//5) create listener object
MyListener listener=new MyListener();
//6) register the listener object with receiver
receiver.setMessageListener(listener);
System.out.println("Receiver1 is ready, waiting for messages...");
System.out.println("press Ctrl+c to shutdown...");
while(true){
Thread.sleep(1000);
}
}catch(Exception e){System.out.println(e);}
}
}
我曾开发过市场上领先的 BPM 产品。
它无限循环 运行 代理(你可以把它想象成一个后台线程总是 运行ning)来监控某些事情
例如:如果违反服务水平协议(SLA),将触发电子邮件警报或通知相关方
如果你是新手程序员,你可以想到这个用例:菜单驱动program/application
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int choice = 0;
System.out.println("1. Add Book");
System.out.println("2. Delete Book");
System.out.println("3. View Books");
System.out.println("4. Exit");
while(true) {
//read input from console
String input = br.readLine();
choice = Integer.parseInt(input);
switch(choice) {
case 1: //code to add a book to library
break;
case 2: //code to delete a book from library
break;
case 3: //code to view all the books in library
break;
case 4://code to exit the application
System.exit(0);
}
}
无限循环在Java中有哪些实际应用?
例如:
while(true){
//statements, but the loop is never set to false
}
你什么时候可以用这个?
从某种意义上说是无限的,直到您希望它保持不变 运行。因此,在用户点击 "exit" 之前,保持 运行 一个程序。
在您的示例中,您需要在代码中添加一些最终会破坏它的内容。
if (this happens)
break
end
但是你也可以将布尔值而不是 counter < 1 放在 while 循环中。所以在你的例子中这是不好的做法。
program to guess age
initialize age
while (age != 20)
get guess from user
age = guess from user
end
如果您的工作是检查是否有任何工作需要完成,完成工作,然后永远重复,您可能会围绕该工作编写一个无限循环。编写无限循环的一种稍微更有效的方法是:
while (true) {
//do job
}
此类作业的示例可能包括轮换日志文件、copying/backing上传用户上传等。
我通常写的线程看起来像这样:
while(true) {
data = stream.read();
// process data
}
stream.read()
通常会挂起,直到提供数据为止。这只会不断读取、处理数据,然后等待更多数据。
在许多更高级别的应用程序中,while(true)
循环隐藏在较低的位置(特别是在基于事件的框架中)。例如,轮询硬件。在某处有一个 while(true)
或类似的结构。
简单的硬件通常只有两个功能:某种设置功能,然后是无限循环,在某些地方实际上称为 forever
。循环一直持续到硬件复位或关闭。
"Crash-only" 服务器进程通常是相同的。根据设计,阻止它们的唯一方法是相当于拔掉插头的软件。
我们可以使用无限循环来重复执行某些任务,直到用户想要退出。
while(true){
//perform some task
// value of flag changes in course of your program execution
if(flag){
break;
}
}
在您希望线程执行到应用程序生命周期的情况下,也可以使用无限循环。您可以将这些线程标记为 daemon thread.
过去,人们在编写 JMS 接收器时使用无限循环。但现在肯定是,spring+JMS 集成是首选。
import javax.jms.*;
import javax.naming.InitialContext;
public class MyReceiver {
public static void main(String[] args) {
try{
//1) Create and start connection
InitialContext ctx=new InitialContext();
QueueConnectionFactory f=(QueueConnectionFactory)ctx.lookup("myQueueConnectionFactory");
QueueConnection con=f.createQueueConnection();
con.start();
//2) create Queue session
QueueSession ses=con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
//3) get the Queue object
Queue t=(Queue)ctx.lookup("myQueue");
//4)create QueueReceiver
QueueReceiver receiver=ses.createReceiver(t);
//5) create listener object
MyListener listener=new MyListener();
//6) register the listener object with receiver
receiver.setMessageListener(listener);
System.out.println("Receiver1 is ready, waiting for messages...");
System.out.println("press Ctrl+c to shutdown...");
while(true){
Thread.sleep(1000);
}
}catch(Exception e){System.out.println(e);}
}
}
我曾开发过市场上领先的 BPM 产品。
它无限循环 运行 代理(你可以把它想象成一个后台线程总是 运行ning)来监控某些事情
例如:如果违反服务水平协议(SLA),将触发电子邮件警报或通知相关方
如果你是新手程序员,你可以想到这个用例:菜单驱动program/application
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int choice = 0;
System.out.println("1. Add Book");
System.out.println("2. Delete Book");
System.out.println("3. View Books");
System.out.println("4. Exit");
while(true) {
//read input from console
String input = br.readLine();
choice = Integer.parseInt(input);
switch(choice) {
case 1: //code to add a book to library
break;
case 2: //code to delete a book from library
break;
case 3: //code to view all the books in library
break;
case 4://code to exit the application
System.exit(0);
}
}