tomcat在windows下能夠直接關閉,可是貌似在Linux下有時候shutdown.sh 沒有關閉tomcat進程;html
現象:在Linux下shutdown.sh ,而後查看tomcat進程發現沒有徹底關閉;java
實驗:(爲何原來在Linux下沒有發現這個問題呢???)linux
實驗一:編程
安裝一個純淨的tomcat放在linux上,啓動—>查看tomcat進程—>關閉–>查看tomcat進程。。。。。。。。。。。發現關閉後沒有tomcat的進程啊啊啊windows
實驗二:tomcat
將項目丟進tomcat, 啓動—> 查看進程—> 關閉—> 查看進程。。。。。。。。tomcat的進程還在!!!!!!併發
網上查找出來解釋:通常形成這種緣由是由於項目中有非守護線程的存在(關於守護線程閱讀下面文章)spa
JAVA併發編程——守護線程(Daemon Thread)code
解決:
兩個思路,一、從程序上根本解決。 二、從tomcat上解決
一: 從程序上解決(要求較高,項目底層代碼的修改)
在項目中找到對應new Thread的地方setDaemon(true),後面shutdown就沒有tomcat進程了;
二: 從tomcat解決