日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 架構(gòu)師社區(qū)
[導(dǎo)讀]記得初學(xué)Java那會,剛學(xué)完語法基礎(chǔ),就接觸到了反射這個Java提供的特性,盡管在現(xiàn)在看來,這是非?;A(chǔ)的知識點,但那時候無疑是興奮的,瞬間覺得自己脫離了“Java初學(xué)者”的隊伍。隨著工作經(jīng)驗的積累,我也逐漸學(xué)習到了很多類似的讓我為之而興奮的知識點,Unsafe的使用技巧無疑便是...

記得初學(xué) Java 那會,剛學(xué)完語法基礎(chǔ),就接觸到了反射這個 Java 提供的特性,盡管在現(xiàn)在看來,這是非?;A(chǔ)的知識點,但那時候無疑是興奮的,瞬間覺得自己脫離了“Java 初學(xué)者”的隊伍。隨著工作經(jīng)驗的積累,我也逐漸學(xué)習到了很多類似的讓我為之而興奮的知識點,Unsafe 的使用技巧無疑便是其中一個。

sun.misc.Unsafe 是 JDK 原生提供的一個工具類,包含了很多在 Java 語言看來很 cool 的操作,例如內(nèi)存分配與回收、CAS 操作、類實例化、內(nèi)存屏障等。正如其命名一樣,由于其可以直接操作內(nèi)存,執(zhí)行底層系統(tǒng)調(diào)用,其提供的操作也是比較危險的。Unsafe 在擴展 Java 語言表達能力、便于在更高層(Java層)代碼里實現(xiàn)原本要在更低層(C層)實現(xiàn)的核心庫功能上起到了很大的作用。

從 JDK9 開始,Java 模塊化設(shè)計的限制,使得非標準庫的模塊都無法訪問到 sun.misc.Unsafe。但在 JDK8 中,我們?nèi)匀豢梢灾苯硬僮?Unsafe,再不學(xué)習,后面可能就沒機會了。

使用 Unsafe

Unsafe 被設(shè)計的初衷,并不是希望被一般開發(fā)者調(diào)用,所以我們不能通過 new 或者工廠方法去實例化 Unsafe 對象,通??梢圆捎梅瓷涞姆椒ǐ@取到 Unsafe 實例:

public?static?final?Unsafe?unsafe?=?getUnsafe();

static?sun.misc.Unsafe?getUnsafe()?{
????try?{
????????Field?field?=?Unsafe.class.getDeclaredField("theUnsafe");
????????field.setAccessible(true);
????????return??(Unsafe)?field.get(null);
????}?catch?(Exception?e)?{
????????throw?new?RuntimeException(e);
????}
}
拿到之后,便可以用這個全局的單例對象去為所欲為了。

功能概覽

聊聊Unsafe的一些使用技巧

圖片來源于網(wǎng)絡(luò),我直接借用過來了。上圖包含了 Unsafe 的眾多功能,還算全面。如果全部介紹,文章篇幅會過長,形式難免會流水賬,我打算結(jié)合我的一些項目經(jīng)驗以及一些比賽經(jīng)驗,從實踐角度聊聊 Unsafe 的一些使用技巧。

內(nèi)存分配

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉