想讨论一下关于无限监听类程序启动关闭的问题

08-08-15 bloodrate
在刚开始学java的时候,所有程序入口代码都在Main函数里,点击运行,查看结果,结束。

之后接触另一类程序,程序启动后需要点击“停止”才能停止,比如应用服务器,还有SWING等桌面应用。

很想知道这类程序与最原始的main函数程序差异在哪

关于应用服务器,我想可能是无限循环监听的方式,没次接到请求单起一个线程用来执行,然后再次循环,直到点击“关闭”才强制退出循环。

而关于SWING程序为什么能一直显示在桌面上,我觉得后台也是个无限循环的draw,所谓关闭就是强制退循环。

对于这类程序我有两个感觉:

1、没有进程是执行不完的,要想让他一直不结束,只好通过死循环

2、有些程序上执行了很多线程处理各种任务,但是所有线程追究最终都是由同一个主线程创建,那个无限循环就在此线程内,才保证程序能不结束,随时能增加新的任务。

3、如果2所说的主线程结束“跳出循环”,而子线程还没结束,主线程会等待所有子线程都结束才结束,所以在结束主线程的时候,除了跳出循环以外,还有中断自己创建的所有子线程,各个子线程接到中断指令后停止,并打印出响应信息。(在关闭应用服务器的时候看到不断的出现提示“xxxx关闭完成”,也就是子线程接到中断指令后作的事情)

我说的只是我个人的认识,这类程序没有写过,只能凭借感觉走,大家也谈谈吧

benq998
2008-08-16 16:33
看来好像是做Windows C++出身啊,MFC应该比较了解吧?

bloodrate
2008-08-18 16:12
我以前学过汇编,也比较喜欢这个,按照汇编的思想,程序是很多指令组成的,每段程序执行的时候有个指针指向下一条要执行的语句,那么程序终究是会执行完的,但是像swing这样打开一个窗口如果不关的话一直停留在屏幕上,我觉得只能让指令指针往回指形成无限循环。

猜你喜欢