jdk新特性總結 NIO

2021-10-24 20:09:39 字數 2320 閱讀 8189

jdk1.8的新特性

一丶lamuda表示式

函式式介面可以用 ()->{}代替內部類

二丶stream流 操作

建立stream:

1.集合.stream;

2.arrays.stream(陣列);

3.通過stream的iteate建立 乙個無限流

stream的分類:

1.stream:序列流

2.parallelstream:並行流

三丶四大基本函式式介面

function:傳入t型別返回r型別  stream.map();

consumer:傳入t不返回 如如何資料 stream.foreach(); strea.sorted();

supplier:生產乙個t型別的物件 返回乙個t物件

predicate:對t進行斷言判斷 返回乙個boolean stream.filter

四丶新日期類

舊時間操作類:

date:執行緒不安全,功能 不夠全面

calendar:現執行緒不安全,是 date的替代品

新時間操作類

localdate:獲取日期

localtime:獲取時間

localdatetime:獲取日期時間

zoneddatetime:獲取帶時區的時間

instant:獲取時間戳

duration:用於計算兩個時間間隔的類

舊時間格式化器:

******dateformat:執行緒不安全

新時間格式化器:

datetimeformatter:執行緒安全,支援格式多,提供語言選擇

五丶io流

bio:同步阻塞式io,伺服器實現模式為乙個連線乙個執行緒,即客戶端有連線請求時伺服器端就需要啟動乙個執行緒進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷,當然可以通過執行緒池機制改善。

nio:同步非阻塞式io,伺服器實現模式為乙個請求乙個執行緒,即客戶端傳送的連線請求都會註冊到多路復用器上,多路復用器輪詢到連線有i/o請求時才啟動乙個執行緒進行處理。

aio(nio.2): 非同步非阻塞io,在此種模式下,使用者程序只需要發起乙個io操作然後立即返回,等io操作真正的完成以後,應用程式會得到io操作完成的通知,此時使用者程序只需要對資料進行處理就好了,不需要進行實際的io讀寫操作,因為真正的io讀取或者寫入操作已經由核心完成了。

通道:channel ,不記錄資料只負責傳輸

bio/nio通道

filechannel //檔案通道

socketchannel //客戶端 client通道

serversocketchannel //tcp服務端server通道

datagramchannel //udp服務端server通道

aio通道:

asynchronousfilechannel //非同步檔案通道

asynchronoussocketchannel //非同步網路客戶端client通道

asynchronousserversocketchannel //y非同步網路服務端server通道

緩衝區 :負責資料的儲存

bytebuffer

charbuffer

…獲取方式

allocate:非直接緩衝區,程式–>使用者態–>核心態–>磁碟

allocatedirect:直接緩衝區,程式–>核心態–>磁碟 快但風險和不可控指數高

四大引數

bytebuffer.limit(); //界限 界限外的不可讀寫 可以理解為有效資料

bytebuffer.capacity(); //容量 一旦宣告不可改變

bytebuffer.position(); //正在操作的緩衝區的位置

bytebuffer.mark(); //記錄psotation的位置

關係:postation阻塞模式切換非阻塞模式

socketchannel.configureblocking(false);

selector 選擇器:

//獲取選擇器

selector selector = selector.open();

//註冊選擇器:將

open.register(selector, selectionkey.op_accept);

while (selector.select()>0)

} else if (next.isreadable()) }}

iterator.remove();

}

JDK各個版本新特性

jdk1.5 1.自動拆裝箱 public class testclass 輸出結果 true false1執行了integer a integer.valueof 10 自動裝箱操作,所以會重用記憶體位址,但是2裡的200不在 128到127範圍內,不會重用記憶體位址。2.可變引數 實質上是乙個陣...

JDK1 5的新特性

1.靜態匯入 靜態匯入得是靜態方法或靜態類 2.可變引數 overload與override的區別 overload是過載,override是重寫 可變引數就是overload 可變引數的特點 1.可變引數中的.只能出現在引數列表的最後 2.可變引數中的.位於變數型別和變數名之間,前後有無空格都可以...

JDK5新特性 列舉

一些程式在執行時,他需要的資料不能是任意的,而必須是一定範圍內的值,jdk5以前採用自定義類來解決,jdk5以後可以直接採用列舉解決。在jdk5之後,使用enum關鍵字定義一種新的型別,稱為列舉型別。enum類和enum關鍵字 使用enum關鍵字定義的列舉類,實際上就相當於定義了乙個類,此類繼承了e...