深入淺析Servlet3.0/3.1中的異步處理-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線(xiàn)動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的湘東網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

深入淺析Servlet 3.0/3.1 中的異步處理?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式處理請(qǐng)求,即每一次Http請(qǐng)求都由某一個(gè)線(xiàn)程從頭到尾負(fù)責(zé)處理。如果一個(gè)請(qǐng)求需要進(jìn)行IO操作,比如訪問(wèn)數(shù)據(jù)庫(kù)、調(diào)用第三方服務(wù)接口等,那么其所對(duì)應(yīng)的線(xiàn)程將同步地等待IO操作完成, 而IO操作是非常慢的,所以此時(shí)的線(xiàn)程并不能及時(shí)地釋放回線(xiàn)程池以供后續(xù)使用,在并發(fā)量越來(lái)越大的情況下,這將帶來(lái)嚴(yán)重的性能問(wèn)題。即便是像Spring、Struts這樣的高層框架也脫離不了這樣的桎梏,因?yàn)樗麄兌际墙⒃赟ervlet之上的。為了解決這樣的問(wèn)題,Servlet 3.0引入了異步處理,然后在Servlet 3.1中又引入了非阻塞IO來(lái)進(jìn)一步增強(qiáng)異步處理的性能。

本文源代碼:https://github.com/davenkin/servlet-3-async-learning

項(xiàng)目下載地址:servlet-3-async-learning_jb51.rar

在Servlet 3.0中,我們可以從HttpServletRequest對(duì)象中獲得一個(gè)AsyncContext對(duì)象,該對(duì)象構(gòu)成了異步處理的上下文,Request和Response對(duì)象都可從中獲取。AsyncContext可以從當(dāng)前線(xiàn)程傳給另外的線(xiàn)程,并在新的線(xiàn)程中完成對(duì)請(qǐng)求的處理并返回結(jié)果給客戶(hù)端,初始線(xiàn)程便可以還回給容器線(xiàn)程池以處理更多的請(qǐng)求。如此,通過(guò)將請(qǐng)求從一個(gè)線(xiàn)程傳給另一個(gè)線(xiàn)程處理的過(guò)程便構(gòu)成了Servlet 3.0中的異步處理。

舉個(gè)例子,對(duì)于一個(gè)需要完成長(zhǎng)時(shí)處理的Servlet來(lái)說(shuō),其實(shí)現(xiàn)通常為:

@WebServlet("/syncHello")
public class SyncHelloServlet extends HttpServlet {

  protected void doGet(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
    new LongRunningProcess().run();
    response.getWriter().write("Hello World!");
  }
}

名稱(chēng)欄目:深入淺析Servlet3.0/3.1中的異步處理-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article2/ddpcic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作商城網(wǎng)站、App設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站