鍍金池/ 問答/人工智能  Java  Linux/ springboot多線程問題

springboot多線程問題

我做了一個基于springboot的與手機(jī)App交互的系統(tǒng)。
正常來說,就是App向系統(tǒng)發(fā)送一個POST Request,請求內(nèi)容是一段json。然后我的系統(tǒng)處理完會立馬Response一串json。

但是現(xiàn)在有個需求,我的App向系統(tǒng)發(fā)送完Request后,系統(tǒng)會立刻Response,然后系統(tǒng)再處理一些東西,最后給手機(jī)App發(fā)一個推送。

我想用多線程的方式,系統(tǒng)的Controller攔截到Request后,交給Service處理。Service里啟動一個子線程,然后Service就return了一段json,主線程工作結(jié)束,并且手機(jī)收到了Response。剛才啟動的子線程此時還在處理,等幾秒鐘處理完成后,再向手機(jī)App發(fā)送推送。
可是我測試的時候發(fā)現(xiàn),一旦Service return了之后,子線程也就停止運(yùn)行了。

所以這種需求應(yīng)該用什么方式實現(xiàn)?或者有沒有辦法,Service可以提前Response數(shù)據(jù)給手機(jī),然后繼續(xù)處理,就是說不再使用return “json”的方式,而且用某種方法Response,然后繼續(xù)跑剩下的內(nèi)容,最后Service的函數(shù)結(jié)束,這樣也就不用啟動子線程了。

回答
編輯回答
撥弦

將所有的子線程都使用一個指定的線程池去維護(hù),在系統(tǒng)啟動時初始化這個線程池。在service中將任務(wù)線程提交到線程池中,線程池處理任務(wù)并給出相應(yīng)推送結(jié)果。

2017年6月18日 04:32