鍍金池/ 問答/Linux  HTML/ java后臺接收請求處理是單線程的嗎?

java后臺接收請求處理是單線程的嗎?

前臺用ajax請求后臺,一個簡單的操作,比如提交表單,返回成功后調(diào)用另一個ajax請求刷新列表,我后臺在接收表單數(shù)據(jù)后先保存入數(shù)據(jù)庫,然后返回成功,在reponse返回的代碼后面接下來繼續(xù)處理業(yè)務邏輯,這樣在后臺繼續(xù)處理業(yè)務邏輯的時候前臺已經(jīng)得到成功的返回,然后前臺繼續(xù)發(fā)起刷新表單的請求,但是發(fā)現(xiàn)后臺必須要等到前一個提交表單的請求處理完所有的業(yè)務代碼后才會響應這個刷新表單的請求,感覺就像是一個線程串行在處理請求。按照我的理解一個request請求應該會從線程池中取一個新線程來處理這個請求到相應的全過程,每個請求應該都是獨立的,為什么會出現(xiàn)這種一個線程同時處理多個請求的情況?難道是在同一頁面發(fā)起的原因?因為只要另開一個頁面就沒問題,當前頁面的阻塞不會影響到另一個頁面

回答
編輯回答
笑浮塵
這樣在后臺繼續(xù)處理業(yè)務邏輯的時候前臺已經(jīng)得到成功的返回
這句話我不理解了,ajax去請求了后臺,后臺沒有業(yè)務沒有處理完,前臺ajax怎么先得到了響應結(jié)果?

還有我覺得你思考的點直接放到了后臺,有考慮過ajax嵌套的情況嗎(也要注意ajax的同步異步),這個沒有代碼也不知道,只能給個建議。

至于最后提到的,我記得自己剛接觸spring的時候也想過這個問題,這個和scope有關(guān),你可以寫個demo,我當時寫demo測試時,設(shè)置了一個成員變量,每次請求來就++,結(jié)果發(fā)現(xiàn)默認是一直累加的(這個結(jié)果我都不確定了,很久很久之前寫的了,你可以自己試試)

2017年9月5日 11:01
編輯回答
挽歌

后臺肯定是多線程的,我想應該是你的后臺的response設(shè)置好的時候,其實并沒有真正返回給前臺,要等到你業(yè)務邏輯處理完才會送響應到前臺,所以給你造成了單線程的錯覺。

2017年2月10日 20:11