如何利用Java NIO實現高性能高併發的http服務器

在學習Java NIO的過程當中,我一直理解不了Java NIO是怎麼用來實現高併發的服務器的,網上給出的例子裏,基本上沒有多少說到這一點的,Tomcat,Jetty這些的源碼又太龐大了,致使我無從下手。服務器

後來搜了下才發現,JDK自帶了一個httpserver的實現,看了下代碼,很是簡潔,很是規範,一會兒就讓我搞懂了Java NIO是怎麼實現高併發的了。併發

NIO是同步非阻塞模型,同步是指用NIO讀取數據,須要你的線程一直在運行着,直到數據讀寫完畢。非阻塞是指監聽通道的時候是非阻塞的,好比向通道詢問有沒有數據可讀的時候,能夠立刻就返回有或者沒有。若是有數據,你的線程就能夠去處理讀數據這部分的邏輯;若是沒有數據,你的線程能夠去忙其餘的事情,這樣子單個線程的處理能力就會高不少,不用老是等着數據。高併發

在jdk的httpserver裏,處理請求的過程大體以下圖:學習

圖片描述

相關文章
相關標籤/搜索