激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java 8 中的 10 個特性總結(jié)及詳解

Java 8 中的 10 個特性總結(jié)及詳解

2020-06-12 15:25oschina JAVA教程

本主要介紹Java 8中的新特性,這里整理了相關(guān)資料并整理了10個特性,逐一介紹說明,有興趣的朋友可以參考下

你以前聽到的談論關(guān)于Java8的所有都是圍繞lambda表達式. 但它僅僅是Java8的一部分. Java 8 有許多新特性—一些強大的新類和語法, 還有其他的從一開始就應該具有的東西.

我將要介紹我認為值得了解的10個精華特性. 它們中最少也會有一個或兩個你想要試一試, 所以我們開始吧!Java 8 中的 10 個特性總結(jié)及詳解1. 默認方法

Java語言一個新添加的特性是你可以為接口(interface)的方法添加方法體(稱為默認方法). 這些方法會被隱式地添加到實現(xiàn)這個接口的類中.

這能使你在不破壞代碼的情況下為已存在的庫添加新功能. 這很明顯是個提升. 但另一方面這會混淆接口與類之間的界限, 因為接口用于定義契約, 而類用于定義具體實現(xiàn). 從好的方面來說, 它會以一種優(yōu)雅的方式使接口更智能, 并且避免了重復和擴展庫. 但壞的方面, 我們稍后就會看到, 接口方法要查詢this并將它轉(zhuǎn)換成具體類. Shivers….

2. 進程終止

啟動一個外部進程是你所做的事情中的一半-當這個進程崩潰, 掛起或消耗100% CPU時你要返回來對它進行調(diào)試. 現(xiàn)在Process類裝備了兩個新方法來幫助你控制不守規(guī)矩的進程.

第一個是 isAlive(), 它會讓你不需要等待進程運行完畢就可以檢查這個進程是否仍在運行. 第二個更強大的方法是destroyForcibly() , 它能讓你強制殺死超時或不再需要的進程.

3. StampedLocks

現(xiàn)在有一些令人激動的東西了. 沒有人喜歡同步代碼. 它是降低你的應用的吞吐量的罪魁禍首(特別是可擴展的應用), 或者更嚴重–導致應用掛掉. 盡管如此,在某些時候你別無選擇.

有很多方法來限制多線程同步訪問臨界資源.  其中最著名的是讀寫鎖(ReadWriteLock)和與它相關(guān)的實現(xiàn). 它通過允許多線程訪問同一資源但阻塞操作資源的線程來減少資源爭奪. 這聽起來在理論上很不錯, 但實際上這個鎖是相當慢的, 特別是當有大量寫線程時.

注: 讀寫鎖中將資源訪問者分為兩類:讀者和寫者, 讀者對資源進行只讀操作, 寫者可操作資源.

Java 8 引入了一種全新的稱為StampedLock的讀寫鎖. 這個鎖不僅速度更快, 它更為樂觀鎖提供了一組強大的API, 通過它你可以以最小的代價取得一個讀者鎖, 甚至在選擇期間不希望發(fā)生寫操作.  在選擇結(jié)束后你可以通過查詢這個鎖來查看在選擇期間是否有寫操作, 在這種情況下你可以選擇是否重試, 更新鎖還是放棄.

這個鎖是個很強大的工具, 它需要一篇專門的文章來描述. 我對這個新玩意兒興奮得頭都暈了–做得好!

更多詳情請參閱這里

4. Concurrent Adders

對從事多線程應用的人來說這是另一件小寶貝. 這是一個用于多線程計數(shù)器的簡單高效的新API, 它比使用AtomicInteger更快. 真他媽酷!

5. Optional Values

哦, 空指針, 所有Java開發(fā)者的噩夢. 從一開始(或最少在1965)它可能就是最流行的異常了.

借鑒自Scale和Hashell, Java 8 擁有一個新的稱為Optional的模板, 用于封裝可能為null的引用. 它絕不是終結(jié)null的銀彈, 它更是一種方式-讓API設(shè)計者從代碼級別(而不是文檔級別)表明一個null值可能會傳入一個方法或從一個方法中返回, 以讓調(diào)用者為null值做好準備. 因此, 這只能在新API下工作, 并且假設(shè)調(diào)用者不會讓引用逃脫這個封裝從而導致不安全的解引用.

我不得不說我對這個特性很矛盾. 一方面null有很大問題, 所以我傾向于在null發(fā)生前做好所有事. 但另一方面我很懷疑它能否成功.這是因為使用Optional需要全公司不斷的努力,但它并沒有直接的價值。除非雷厲風行,否則它很可能會被放棄.

更多關(guān)于Optional請點擊這里

6. 注解任何東西

另外一個Java語言小改進是 annotations 現(xiàn)在能夠添加在你代碼的 幾乎所有東西 上。以前, annotations 只能加在像類或者方法聲明上。使用 Java 8 的 annotations 可以加在變量和參數(shù)聲明中,不僅在傳遞一個值給指定類型時,甚至是分配空間給一個新的對象的時候。這是通過靜態(tài)分析和向?qū)Чぞ?(比如 FindBugs) 讓Java 語言更友好,集中精力 (沿著 Java 文檔工具和 API 改進) 的一部分 。這是個很棒的特性,但是更多的是像Java 7 引入的 invokeDynamic ,其真正的價值決定在于 社區(qū)用它來做什么。

7. 溢出操作

現(xiàn)在這里有了一系列從一開始就應該包含在核心庫中的方法. 我最喜歡的一個習慣是調(diào)試當int超過2^32時的溢出, 然后繼續(xù)隨機地創(chuàng)建這個臭名昭著的bug(例如 “我是怎么得到這個奇怪的值的?”).

這次也沒有銀彈, 但卻有一系列操作數(shù)字的函數(shù), 這些函數(shù)當以一種比隱式引起溢出的標準的+/*操作符更不能容忍的方式發(fā)生溢出時就會拋出異常.. 如果是我的話,我會將它設(shè)為JVM的默認模式, 使用允許算數(shù)溢出的顯式函數(shù)(而不是+ *運算符).

8. 文件夾遍歷

迭代目錄樹的內(nèi)容在google搜索上很早就出現(xiàn)了(在這種情況下你可能會使用Apache.FileUtils). Java 8

為Files添加了10個新方法. 我最喜歡的是walk() ,它創(chuàng)建了一個懶惰流(對于大型文件系統(tǒng)很重要)來迭代

目錄結(jié)構(gòu)的內(nèi)容.

9. 強隨機數(shù)生成

現(xiàn)今關(guān)于密碼和密鑰的脆弱性的談話短不了. 程序安全是個棘手的問題而且很容易犯錯誤. 這也是我喜歡

在JVM中能夠自動挑選最強隨機數(shù)生成器的新SecureRandom.getinstanceStrong()方法的原因. 它降低

了取得生成器失敗, 或默認取得一個弱生成器從而導致密鑰或加密值容易被破解的機率.

10. Date.toInstant()

Java 8 引入一個全新的  date time API。 因為已有的api并不好,這是相當可以理解的。現(xiàn)在 Joda 已經(jīng)專注和深入 Java 的 date time API 好多年。但是,就算用新的API仍有個大問題存在—— 有數(shù)以噸計的代碼和庫在使用舊的API。

我們都知道面臨這個問題,那么要做些什么?

因為 Java 8 已經(jīng)做得相當優(yōu)雅,在Date類中添加了一個新的方法toInstant() , 用來將其轉(zhuǎn)化成為新的API。就算使用舊的Date API (在可預見的未來也是一樣) , 也能讓你快速升級到新的API。

如果你覺得文章還有什么該有的特性沒提到,抑或是不同意我們的分析?請評論給我們——這就是發(fā)文的目的 !

以上就是對Java 8新特性的資料整理,后續(xù)繼續(xù)補充相關(guān)資料謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: av电影在线观看网站 | 国产一区免费观看 | 黄色a级片视频 | 日韩毛片毛片久久精品 | 一级免费黄视频 | 免费a级观看 | 日日操视频 | 羞羞答答www网站进入 | 欧美1区2区 | 国产羞羞视频在线观看 | av中文一区 | 中文欧美日韩 | 日韩精品一区二区在线 | 中文字幕在线视频日本 | 中文区永久区 | 一色屋任你操 | 在线1区 | 毛片在哪看 | 日本精品二区 | 鲁丝一区二区三区不属 | 免费观看国产精品视频 | av影院在线播放 | 亚洲精品xxx | 日韩999| 黄色av网站免费 | 福利一区二区三区视频在线观看 | 久久久久久99 | 亚洲一区二区三区日本久久九 | 欧美h版电影在线观看 | 亚洲最大av网站 | 少妇一级淫片免费放正片 | 男人天堂新地址 | 黑色丝袜美美女被躁视频 | 亚洲精品欧美二区三区中文字幕 | 日本羞羞的午夜电视剧 | 97干色 | 中国免费一级毛片 | 92看片淫黄大片一级 | 九色中文字幕 | 经典三级av在线 | 国产精品久久久久久影院8一贰佰 |