dubbo相關知識(四)-- Java中的BIO、NIO、AIO
同步阻塞IO(JAVA BIO):
同步並阻塞,伺服器實現模式為一個連線一個執行緒,即客戶端有連線請求時伺服器端就需要啟動一個執行緒進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷,當然可以通過執行緒池機制改善。
同步非阻塞IO(Java NIO) : 同步非阻塞,伺服器實現模式為一個請求一個執行緒,即客戶端傳送的連線請求都會註冊到多路複用器上,多路複用器輪詢到連線有I/O請求時才啟動一個執行緒進行處理。使用者程序也需要時不時的詢問IO操作是否就緒,這就要求使用者程序不停的去詢問。
非同步阻塞IO(Java NIO):
此種方式下是指應用發起一個IO操作以後,不等待核心IO操作的完成,等核心完成IO操作以後會通知應用程式,這其實就是同步和非同步最關鍵的區別,同步必須等待或者主動的去詢問IO是否完成,那麼為什麼說是阻塞的呢?因為此時是通過select系統呼叫來完成的,而select函式本身的實現方式是阻塞的,而採用select函式有個好處就是它可以同時監聽多個檔案控制代碼(如果從UNP的角度看,select屬於同步操作。因為select之後,程序還需要讀寫資料),從而提高系統的併發性!
(Java AIO(NIO.2))非同步非阻塞IO:
在此種模式下,使用者程序只需要發起一個IO操作然後立即返回,等IO操作真正的完成以後,應用程式會得到IO操作完成的通知,此時使用者程序只需要對資料進行處理就好了,不需要進行實際的IO讀寫操作,因為真正的IO讀取或者寫入操作已經由核心完成了。
BIO、NIO、AIO適用場景分析:
BIO方式適用於連線數目比較小且固定的架構,這種方式對伺服器資源要求比較高,併發侷限於應用中,JDK1.4以前的唯一選擇,但程式直觀簡單易理解。
NIO方式適用於連線數目多且連線比較短(輕操作)的架構,比如聊天伺服器,併發侷限於應用中,程式設計比較複雜,
AIO方式使用於連線數目多且連線比較長(重操作)的架構,比如相簿伺服器,充分呼叫OS參與併發操作,程式設計比較複雜,JDK7開始支援。
相關推薦
dubbo相關知識(四)-- Java中的BIO、NIO、AIO
下面我們再來理解組合方式的IO型別,就好理解多了。 同步阻塞IO(JAVA BIO): 同步並阻塞,伺服器實現模式為一個連線一個執行緒,即客戶端有連線請求時伺服器端就需要啟動一個執行緒進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷,當然可以通過執行緒池機制改善。 同步非阻塞IO(Java
dubbo相關知識(六)-- java RMI框架
1、概述 在 Java 世界裡,有一種技術可以實現“跨虛擬機器”的呼叫,它就是 RMI(Remote Method Invocation,遠端方法呼叫),通過RMI技術,某一個本地的JVM可以呼叫存在於另外一個JVM中的物件方法,就好像它僅僅是在呼叫本地JVM中某個物件
Java多執行緒(四)java中的Sleep方法
點我跳過黑哥的卑鄙廣告行為,進入正文。 Java多執行緒系列更新中~ 正式篇: Java多執行緒(一) 什麼是執行緒 Java多執行緒(二)關於多執行緒的CPU密集型和IO密集型這件事 Java多執行緒(三)如何建立執行緒 Java多執行緒(四)java中的Sleep方法
Java多線程(四)java中的Sleep方法
start 線程的生命周期 cnblogs del 廣告 catch 創建 exceptio 分析 點我跳過黑哥的卑鄙廣告行為,進入正文。 Java多線程系列更新中~ 正式篇: Java多線程(一) 什麽是線程 Java多線程(二)關於多線程的CPU密集型和IO密
Spring事務專題(四)Spring中事務的使用、抽象機制及模擬Spring事務實現
Spring中事務的使用示例、屬性及使用中可能出現的問題 # 前言 本專題大綱如下: ![事務專題大綱](https://gitee.com/wx_cc347be696/blogImage/raw/master/image-20200808210340470.png) **對於專題大綱我又做了調整哈,
Java中BIO,NIO和AIO使用樣例
上文中分析了阻塞,非阻塞,同步和非同步概念上的區別以及各種IO模型的操作流程,本篇文章將主要介紹Java中BIO,NIO和AIO三種IO模型如何使用。需要注意的是,本文中所提到的所有樣例都是在一個server對應一個client的情況下工作的,如果你想擴充套件為一個se
安全程式設計(十四)- Java中throw和throws的區別
1.粗淺來說 throw是一個語句丟擲異常,throws是一個方法丟擲異常; throw不是和try-catch-finally配套使用就是和throws配套使用,而throws可
Java程式設計師從笨鳥到菜鳥之(四十)細談struts2(四)struts2中action執行流程和原始碼分析
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興! 首先我們看一下struts官方給我們提供的struts執行流程從上面流程圖我們可以看出struts執行的流程大體分一下階段:1. 初始的請求通過一條標準的過濾器
Java基礎知識(四)——面向物件(下)
Java基礎知識(四)——面向物件(下) Java8的增強包裝類: 為了解決8種基本資料型別不能當成Object型別變數使用的問題。 JDK1.5提供了自動裝箱(Autoboxing)和自動拆箱·(AotuUnboxing)功能,所謂自動裝箱,就是可以把一個基本型別變數直接賦給對應的包裝
重新認識java(六) ---- java中的另類:static關鍵字(附程式碼塊知識)
你知道麼,static的用法至少有五種? 初識static static是“靜態”的意思,這個大家應該都清楚,靜態變數,靜態方法大家也都能隨口道來。但是,你真的理解靜態變數和靜態方法麼?除了這些static還有什麼用處? 事實上,static大
FPGA基礎知識(四)鎖存器、觸發器、寄存器和緩沖器的區別
高端 指示器 領域 串行 方法 register 緩沖區 計算機 字節 一、鎖存器鎖存器(latch)---對脈沖電平敏感,在時鐘脈沖的電平作用下改變狀態鎖存器是電平觸發的存儲單元,數據存儲的動作取決於輸入時鐘(或者使能)信號的電平值,僅當鎖存器處於使能狀態時,輸出才會隨著
HBase概念學習(四)Java API之掃描和過濾器
影響 產生 str 實例 分享 get 批量 java api track HBase主要的CRUD操作就不多介紹了,無非就是Put,Get。Delete三個類的運用。 本文相當於是閱讀HBase權威指南的總結。 一、掃描(Scan) 如今看一下掃
(四)Maven中的倉庫
setting back wid csdn esp strong itl nexus 知識 一、分類 maven的倉庫只有兩大類: 1.本地倉庫 2.遠程倉庫,在遠程倉庫中又分成了3種: 2.1 中央倉庫 2.2 私服 2.3
【Java_SSM】(四)Eclipse中通過maven引入jar包
osc ati eight wid -- stat ack ips 技術 這篇博文我們介紹一下如何通過eclipse配置setting並引入jar包 (1)eclipse:Window--Preferences--Maven--User Setting 全部完成
shell 相關知識(1)
shellshell自己的能力 寫腳本還行,起碼現在現網上跑的自己寫的腳本程序-日誌的 定時備份和刪除,nfs上海量文件刪除和發送郵件。【data】export PATH=/mall/jdk/jdk1.7/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/u
(四)Python中的“四大才子”(字符串、列表、字典、集合)
不可 inf nbsp 創建 重新 指向 分享圖片 table 數據類型 前戲:在python中把數據序列分為可變(mutable)和不可變(immutable)兩種 不可變:string、int、float、tuple 特點
(轉)Java 中關於String的空對象(null) ,空值(empty),空格
空值 ise als 內存 ati 調用 ext cor under 原文出處:Java 中關於String的空對象(null) ,空值(empty),空格 定義 空對象: String s = null; 空對象是指定義一個對象s,但是沒有給該對象分配空間,即沒有實例化
java 學習筆記(四) java連接ZooKeeper
事件 pre case 啟動 sync -m 服務 persist 刪除節點 public class Demo2 { public static void main(String[] args) { String connectString = "192.168.
類與接口(三)java中的接口與嵌套接口
strong span class .... 定義 成員 抽象 數列 多個 一、接口 1. 接口簡介 接口: 是java的一種抽象類型,是抽象方法的集合。接口比抽象類更加抽象的抽象類型。 接口語法: [修飾符] [abstract] interface 接口名 [exten
JavaSE學習總結(四)——Java面向對象十分鐘入門
組織 table 運行時 order 3.1 project park 得到 row 目錄 一、理解類與對象及他們間的關系 1.1、對象 1.3、類與對象間的關系 二、了解面向對象編程的意義 三、定義類與實例化對象 3.1、定義類 3.2、實例化對象 四、區別