源碼時(shí)代JAVA干貨分享|利用NIO模擬實(shí)現(xiàn)Tomcat容器!

NIO是什么
New IO,始于Java1.4,提供新的非阻塞 JavaIO 操作API.
又稱Non-Blocking IO 非阻塞IO
替代舊版本的Blocking IO, 多用于網(wǎng)絡(luò)相關(guān)的API.

成都創(chuàng)新互聯(lián)公司,為您提供重慶網(wǎng)站建設(shè)公司成都網(wǎng)站制作公司、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)房屋鑒定等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場的競爭激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

為什么要使用NIO
使用NIO后,WEB網(wǎng)絡(luò)程序性能可以進(jìn)一步提高
源碼時(shí)代JAVA干貨分享 | 利用NIO模擬實(shí)現(xiàn)Tomcat容器!
模擬Tomcat7, 阻塞IO處理Http請(qǐng)求:

public class BIOHttpServer {
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(8080);
System.out.println(Thread.currentThread().getName()+"啟動(dòng):"+8080);
while(true){
Socket accept = socket.accept();
InputStream inputStream = accept.getInputStream();
byte[] b = new byte[1024];
inputStream.read(b);
System.out.println(new String(b));

            // http響應(yīng)頭 必須這樣寫:
            String response = "HTTP/1.1 200 ok\r\nContent-Length: 11\r\n\r\nHello World\r\n";
            accept.getOutputStream().write(response.getBytes());
            accept.getOutputStream().flush();
            accept.close();         
    }
}

}

NIO高性能的核心原理:
發(fā)起連接
操作系統(tǒng)接收連接
TCP模塊 + 多路復(fù)用機(jī)制
一個(gè)Java線程通過Selector工具選擇性處理
有數(shù)據(jù)傳輸?shù)慕唤o線程池
最終達(dá)到,線程最大程度利用

源碼時(shí)代JAVA干貨分享 | 利用NIO模擬實(shí)現(xiàn)Tomcat容器!

使用NIO:

模擬Tomcat8.5, NIO處理Http請(qǐng)求:
public class NIOHttpServer {
public static void main(String[] args) throws IOException {

    // 1.ServerSocketChannel 綁定端口
    ServerSocketChannel socket = ServerSocketChannel.open();
    socket.configureBlocking(false); // no-Blocking
    socket.bind(new InetSocketAddress(8080));

    System.out.println("NIO

}
源碼時(shí)代JAVA干貨分享 | 利用NIO模擬實(shí)現(xiàn)Tomcat容器!

(本文章由源碼時(shí)代技術(shù)老師原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處?。?/p>

網(wǎng)站名稱:源碼時(shí)代JAVA干貨分享|利用NIO模擬實(shí)現(xiàn)Tomcat容器!
文章來源:http://bm7419.com/article22/gigpcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)域名注冊、網(wǎng)站制作

廣告

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