对于Java程序如果是new出新的进线程,如果新的线程没有退出,主线程是不会退出的,特别是那些run方法是while(true)的情况下;如果这样的程序放置到了开机启动里面(rc.local)将会导致系统Hold在那里,如果进入到系统中。
但是你看tomcat的startUp.sh就可以实现执行监听类程序,仍然可以退出来。
研究了一下startUp.sh以及调用的catalina.sh,才发现玄机是“&”,在执行语句的最后添加这个符号,代表无论是否执行正常,都将向下执行。
与之类似的还有“&&”,代表只有前者执行正确了,才会执行后者。但是如果在执行过程中发生了异常,还是会将异常信息打出来,但是并不影响后续的操作。
收官。
时间: 2024-11-06 22:33:59