Java NIO 系列教程(四)

2021-07-27 17:56:43 字數 1128 閱讀 6889

為進一步提高io的效率,使用了多執行緒來解決這個問題,但是執行緒的數量總是會因為cpu的切換到達負荷值。

選擇器是用來監控通道的i/o的狀態,等client的資料準備就緒,就通知server來處理,這期間server中的執行緒可以做其他的事情。

1)連線channel

2)緩衝區buffer

3)選擇器select:用於監控selectblechannel的io狀態。

阻塞式網路通訊實現

@test

public void server() throws ioexception

string str = new string("傳輸完成");

buf.put(str.getbytes());

buf.flip();

schannel.write(buf);

schannel.shutdownoutput();

sschannel.close();

fon.close();

schannel.close();

}@test

public void client() throws ioexception

int length = 0

; while ((length = schannel.read(buf)) != -1)

schannel.shutdownoutput();

schannel.close();

fin.close();

}

非阻塞式實現

@test

public

void

client() throws ioexception

@test

public

void

server() throws ioexception else

if (selectionkey.isreadable())

}// 取消選擇鍵

iterator.remove();}}

}

JAVA NIO系列(三) Buffer 解讀

nio中的buffer用於和通道互動,資料是從通道讀入緩衝區,從緩衝區中寫入通道的。buffer就像乙個陣列,可以儲存多個型別相同的資料。每種基本資料型別都有對應的buffer類 1 capacity 容量 buffer本質是乙個陣列,在初始化時有固定的大小,這個值就是容量。容量不可改變,一旦緩衝區...

CUDA學習系列教程(四)

gpu程式一般步驟 過程中,一般要盡量降低資料通訊的消耗,所以如果程式需要複製大量的資料到gpu,顯然不是很合適使用gpu運算,最理想的情況是,每次複製的資料很小,然後運算量很大,輸出的結果還是很小,複製回cpu。核函式是gpu每個thread上執行的程式。必須通過 gobal 函式型別限定符定義。...

python 學習系列教程四注釋

在這一節主要說一下注釋這項功能吧,在大多數程式語言中基本都會寫注釋,我在程式設計過程中都會寫,只有使用易語言的時候不寫,那個東西能看明白,很多人感覺不用寫,都能記得住,時間一長就完全忘記了,再看 就麻煩了。行了,python 注釋總結一句話就是 用 號,號後面寫注釋的內容。井號後面的內容都會被pyt...