自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Netty支持哪些I/O模式?

開發(fā) 前端
阻塞意味著等待,等待就會一直占用該線程,當(dāng)連接數(shù)高時,大多線程又在等待,就會耗盡系統(tǒng)的線程資源。

[[357081]]

 1 經(jīng)典I/O模式

BIO (阻塞I/O) JDK1.4前
NIO (非阻塞 I/O) JDK1.4 (2002 年,java.nio 包)
AIO(異步 I/O) JDK1.7 (2011 年)

1.2 對比概念

阻塞與非阻塞

數(shù)據(jù)就緒前要不要等待?

  • 阻塞

沒有數(shù)據(jù)傳過來時,讀會阻塞直到有數(shù)據(jù);緩沖區(qū)滿時,寫操作也會阻塞

  • 非阻塞

直接返回

同步與異步

數(shù)據(jù)就緒后,數(shù)據(jù)操作誰完成?

  • 需要自己去讀是同步
  • 數(shù)據(jù)就緒直接讀好再回調(diào)給程序是異步

2 Netty 對三種 IO 的支持變遷

劃線的已不再支持了哦!

為什么廢除阻塞I/0 (BIO/OIO) ?

連接數(shù)高的情況下:阻塞 -> 耗資源、效率低。

阻塞意味著等待,等待就會一直占用該線程,當(dāng)連接數(shù)高時,大多線程又在等待,就會耗盡系統(tǒng)的線程資源。

為什么刪掉已經(jīng)做好的AIO支持?

  • Windows實現(xiàn)成熟,但其很少用做服務(wù)器
  • Linux常用做服務(wù)器,但其AlO實現(xiàn)不夠成熟
  • Linux下AIO相比較NIO的性能提升不明顯

所以 netty 也是聯(lián)系實際情況才有選擇地支持高性能的 IO 模式。

為什么 Netty 支持多種實現(xiàn)?

通用NIO實現(xiàn)(Common)在Linux下也是epoll,但Netty依舊選擇自己實現(xiàn),因為更好:

Netty提供更多可控參數(shù):

  • JDK的NIO默認(rèn)實現(xiàn)是水平觸發(fā)
  • Netty 是邊緣觸發(fā)(默認(rèn))和水平觸發(fā),且可切換

Netty實現(xiàn)的垃圾回收更少、性能更好

NIO 一定優(yōu)于 BIO?

BIO 代碼簡單且在特定場景:連接數(shù)少,并發(fā)度低,BIO 性能不輸NIO。當(dāng)然考慮業(yè)務(wù)發(fā)展后期都是復(fù)雜場景了,所以 Netty 只考慮 NIO。

本文轉(zhuǎn)載自微信公眾號「JavaEdge」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系JavaEdge公眾號。

 

責(zé)任編輯:武曉燕 來源: JavaEdge
相關(guān)推薦

2021-02-10 08:09:48

Netty網(wǎng)絡(luò)多路復(fù)用

2020-08-07 08:03:37

IONetty

2022-12-08 09:10:11

I/O模型Java

2021-01-19 06:43:10

Netty框架網(wǎng)絡(luò)技術(shù)

2021-03-24 08:03:38

NettyJava NIO網(wǎng)絡(luò)技術(shù)

2020-12-08 09:30:25

CPU內(nèi)存I

2016-07-22 10:42:24

開發(fā)

2020-05-25 09:30:00

UIWeb黑暗模式

2018-11-05 11:20:54

緩沖IO

2013-05-28 10:08:41

IO輸出

2017-05-17 06:39:57

谷歌IO大會谷歌開發(fā)者大會谷歌

2013-05-15 08:50:53

Google IONexusX Phone

2011-01-14 09:25:28

LinuxIO機制

2020-06-03 17:30:42

LinuxIO

2022-09-30 10:44:47

Netty組件數(shù)據(jù)

2017-01-19 19:14:20

Linux重定向命令

2021-10-13 06:49:15

網(wǎng)絡(luò) IO

2015-08-10 14:39:46

Java 操作建議

2013-09-16 16:07:38

Java基礎(chǔ)IO

2020-06-10 08:28:51

Kata容器I
點贊
收藏

51CTO技術(shù)棧公眾號