想讨论一下关于无限监听类程序启动关闭的问题
在刚开始学java的时候,所有程序入口代码都在Main函数里,点击运行,查看结果,结束。
之后接触另一类程序,程序启动后需要点击“停止”才能停止,比如应用服务器,还有SWING等桌面应用。
很想知道这类程序与最原始的main函数程序差异在哪
关于应用服务器,我想可能是无限循环监听的方式,没次接到请求单起一个线程用来执行,然后再次循环,直到点击“关闭”才强制退出循环。
而关于SWING程序为什么能一直显示在桌面上,我觉得后台也是个无限循环的draw,所谓关闭就是强制退循环。
对于这类程序我有两个感觉:
1、没有进程是执行不完的,要想让他一直不结束,只好通过死循环
2、有些程序上执行了很多线程处理各种任务,但是所有线程追究最终都是由同一个主线程创建,那个无限循环就在此线程内,才保证程序能不结束,随时能增加新的任务。
3、如果2所说的主线程结束“跳出循环”,而子线程还没结束,主线程会等待所有子线程都结束才结束,所以在结束主线程的时候,除了跳出循环以外,还有中断自己创建的所有子线程,各个子线程接到中断指令后停止,并打印出响应信息。(在关闭应用服务器的时候看到不断的出现提示“xxxx关闭完成”,也就是子线程接到中断指令后作的事情)
我说的只是我个人的认识,这类程序没有写过,只能凭借感觉走,大家也谈谈吧