0
基於java.NIO的文檔,緩衝區是線程不安全的,而大多數情況下的通道(FileChannel, SocketChannel
等)可安全地用於多線程。我在文檔中找不到的是對例如在兩個線程同時開始從FileChannel
讀取。第一個操作是首先讀取N個字節,還是有可能將第一個M字節傳送到第一個通道的緩衝區,然後下一個傳送到第二個緩衝區,然後再進行上下文切換,再讀入第一個緩衝區。任何人都知道多線程訪問渠道的保證是什麼?java NIO - 對通道的多線程訪問
所以有可能,有一個'Hello World'文件內容和3個併發讀者來取回'HeWo'''''''rld'或者其他類似的混合? – Bober02
@ Bober02我無法找到任何暗示線程不會讀取重複數據的任何內容 - 即它們可能都會返回「Hello World」或來自此字符串的任何字符組合...... –
這是不正確的。他們都推進了原子處理的文件指針,所以它們都會讀取文件的不同部分。 – EJP