日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要向大家介紹了JAVA語言之Java NIO的工作機制和實現原理介紹,通過具體的內容向大家展示,希望對大家學習JAVA語言有所幫助。

前言

本文只簡單介紹NIO的原理實現和基本工作流程

I/O和NIO的本質區別

NIO將填充和提取緩沖區的I/O操作轉移到了操作系統

I/O 以流的方式處理數據,而 NIO 以緩沖區的方式處理數據;IO是阻塞的,NIO是非阻塞的,直到有數據被讀取或者數據完全寫入時,IO線程才開始執行操作,而NIO在如何情況都是非阻塞的

通道(Channel)和緩沖區(Buffer)

NIO三個核心對象:通道(Channel)、緩沖區(Buffer)和選擇器(Selector)

緩沖區只暫時儲存數據,通道用于讀取和寫入操作,作用相當于IO流,與IO流不同的是通道是雙向的。

NIO操作中,從通道讀取的數據必須先放在緩沖區中,發送給通道的數據也先放在緩沖區中。

NIO通道

通道:通道是一個對象,可以通過它讀取和寫入數據,可以理解為是對原I/O包中的流的模擬。

通道和流的區別在于通道是雙向。通道可以用于讀、寫或者同時用于讀寫,而流只有一個方向,即一個流必須是InputStream的子類或者OutputStream的子類。

FileChannel:從文件中讀寫數據。 DatagramChannel:能通過UDP讀寫網絡中的數據。 SocketChannel:能通過TCP讀寫網絡中的數據。 ServerSocketChannel:可以監聽新進來的TCP連接,像Web服務器那樣。對每一個新進來的連接都會創建一個Socke Channel。

NIO緩沖區

緩沖區:緩沖區實質上是一個數組。最常用的緩沖區類型是ByteBuffer,對應Java的基本類型都有一種緩沖區區

緩沖區類型:

- ByteBuffer

- CharBuffer

- ShortBuffer

- IntBuffer

- LongBuffer

- FloatBuffer

- DoubleBuffer

NIO選擇器

選擇器(Selector):選擇器用于監聽多個通道的事件。Selector允許單線程處理多個 Channel。也就是說可以注冊多個通道,使用同一個選擇器,只要開一條線程就可以執行

NIO讀寫操作

NIO讀取過程:先創建一個緩沖區,通道讀取數據放在這個緩沖區

graph LR

Channel-->Buffer

NIO寫入過程:也是先創建一個緩沖區,里面有儲存數據的話,將這些數據發給管道執行寫入操作

graph LR

Buffer-->Channel

文件讀取操作

讀取文件過程:從FileInputStream獲取Channel,創建Buffer,將數據從Channel讀到Buffer中

//從FileInputStream獲取通道

FileInputStream fis = new?FileInputStream( "readandshow.txt"?);

FileChannel fc = fis.getChannel();

//創建緩沖區

ByteBuffer buffer = ByteBuffer.allocate( 1024?);

//將數據從通道讀到緩沖區

fc.read( buffer );

文件寫入過程

FileOutputStream fout=new?FileOutputStream("write.txt");

FileChannel fc=fout.getChannel();

ByteBuffer buffer=ByteBuffer.allocate(1024);

for?(int?i=0; i

本文由職坐標整理并發布,希望對同學們有所幫助。了解更多詳情請關注編程語言JAVA頻道!

總結

以上是生活随笔為你收集整理的java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。