摘要:管道是個線程之間的單向數據連接。數據會被寫到通道,從通道讀取。這里是原理的圖示創建管道通過方法打開管道。
Java NIO 管道是2個線程之間的單向數據連接。Pipe有一個source通道和一個sink通道。數據會被寫到sink通道,從source通道讀取。
這里是Pipe原理的圖示:
創建管道
通過Pipe.open()方法打開管道。例如:
Pipe pipe = Pipe.open();
向管道寫數據
要向管道寫數據,需要訪問sink通道。像這樣:
Pipe.SinkChannel sinkChannel = pipe.sink();
通過調用SinkChannel的write()方法,將數據寫入SinkChannel,像這樣:
String newData = "New String to write to file..." + System.currentTimeMillis(); ByteBuffer buf = ByteBuffer.allocate(48); buf.clear(); buf.put(newData.getBytes()); buf.flip(); while(buf.hasRemaining()) { sinkChannel.write(buf); }
從管道讀取數據
從讀取管道的數據,需要訪問source通道,像這樣:
Pipe.SourceChannel sourceChannel = pipe.source();
調用source通道的read()方法來讀取數據,像這樣:
ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = sourceChannel.read(buf);
read()方法返回的int值會告訴我們多少字節被讀進了緩沖區。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71732.html
摘要:標記,表示記錄當前的位置。直接緩沖通過方法分配的緩沖區,此緩沖區建立在物理內存中。直接在兩個空間中開辟內存空間,創建映射文件,去除了在內核地址空間和用戶地址空間中的操作,使得直接通過物理內存傳輸數據。 NIO與IO的區別 IO NIO 阻塞式 非阻塞式、選擇器selectors 面向流:單向流動,直接將數據從一方流向另一方 面向緩存:將數據放到緩存區中進行存取,經通道進行...
摘要:一般用于控制并發線程數,及線程間互斥。單個信號量的對象可以實現互斥鎖的功能,并且可以是由一個線程獲得了鎖,再由另一個線程釋放鎖,這可應用于死鎖恢復的一些場合。 1. 信號量Semaphore 先說說Semaphore,Semaphore可以控制某個資源可被同時訪問的個數,通過 acquire() 獲取一個許可,如果沒有就等待,而 release() 釋放一個許可。一般用于控制并發線程數...
??作者簡介:大家好,我是小虛竹。Java領域優質創作者?,CSDN博客專家認證?,華為云享專家認證? ??技術活,該賞 ??點贊 ? 收藏 ?再看,養成習慣 Intellij IDEA使用教程相關系列 目錄 問題:報錯unable to establish loopback connection 問題 Caused by: java.io.IOException: Unable to es...
摘要:壓縮文件從秒到秒的優化過程有一個需求需要將前端傳過來的張照片,然后后端進行處理以后壓縮成一個壓縮包通過網絡流傳輸出去。源碼如下使用映射文件開始時間內存中的映射文件打印如下可以看到速度和使用的速度差不多的。 壓縮20M文件從30秒到1秒的優化過程 有一個需求需要將前端傳過來的10張照片,然后后端進行處理以后壓縮成一個壓縮包通過網絡流傳輸出去。之前沒有接觸過用Java壓縮文件的,所以就直接...
摘要:異步可以讓你異步的使用,例如當線程從通道讀取數據到緩沖區時,線程還是可以進行其他事情。當數據被寫入到緩沖區時,線程可以繼續處理它。因此,單個的線程可以監聽多個數據通道。下面是系列文章的目錄概述通道之間的數據傳輸與原文譯者郭蕾校對方騰飛 Java NIO(New IO)是一個可以替代標準Java IO API的IO API(從Java 1.4開始),Java NIO提供了與標準IO不同的...
閱讀 3422·2023-04-25 22:44
閱讀 926·2021-11-15 11:37
閱讀 1632·2019-08-30 15:55
閱讀 2639·2019-08-30 15:54
閱讀 1080·2019-08-30 13:45
閱讀 1430·2019-08-29 17:14
閱讀 1853·2019-08-29 13:50
閱讀 3402·2019-08-26 11:39