问这个问题不知道大家会不会觉得提问者是个傻子(还请各位大佬轻喷 = =)...但是这个问题确实是困扰着我!
问题的起因是这样的,先看下面这段代码
public static void main(String[] args) {
System.out.println(1);
}
运行这段代码的时候,程序开始运行--->控制台输出1--->程序结束,这段代码在运行完成之后就自动停止了,也就是说我可以理解为程序有开始、有结束。那么如何让程序不自动结束呢?(Java)我了解到的方法有 while true 死循环,或者 wait()
public static void main(String[] args) {
System.out.println(1);
while (true) {}
}
public static void main(String[] args) {
Object object = new Object();
System.out.println(1);
synchronized (object) {
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这两种方法都不会主动停止,但是感觉是不是有点太丑了?比如tomcat或者nginx等web容器不太可能写这种比较“无脑”的代码,不可能监听端口的时候是一遍一遍的“无脑”循环监听吧?,所以我就很疑惑,它们是怎么一直在后台运行的?当然,他们的具体实现肯定很复杂,我并不是想知道他们的具体实现(因为太菜估计也实现不了(ーー゛)),而是想了解一下这种想法,在这里请教一下各位大佬,这是怎么个思想或者我要从哪个方面去入手才可能了解这个问题?