国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

unsafe類

RebeccaZhong / 2667人閱讀

摘要:類提供了硬件級別的原子操作,主要提供了以下功能通過類可以分配內(nèi)存,可以釋放內(nèi)存。方法獲取對象中偏移地址對應(yīng)的型的值數(shù)組元素定位類中有很多以結(jié)尾的常量,比如,等,這些常量值是通過方法得到的。可以終止一個掛起的線程,使其恢復正常。

java不能直接訪問操作系統(tǒng)底層,而是通過本地方法來訪問。Unsafe類提供了硬件級別的原子操作,主要提供了以下功能:

1、通過Unsafe類可以分配內(nèi)存,可以釋放內(nèi)存。

類中提供的3個本地方法allocateMemory、reallocateMemory、freeMemory分別用于分配內(nèi)存,擴充內(nèi)存和釋放內(nèi)存,與C語言中的3個方法對應(yīng)。

2、可以定位對象某字段的內(nèi)存位置,也可以修改對象的字段值,即使它是私有的。

字段的定位:JAVA中對象的字段的定位可能通過staticFieldOffset方法實現(xiàn),該方法返回給定field的內(nèi)存地址偏移量,這個值對于給定的filed是唯一的且是固定不變的。getIntVolatile方法獲取對象中offset偏移地址對應(yīng)的整型field的值,支持volatile load語義。getLong方法獲取對象中offset偏移地址對應(yīng)的long型field的值

數(shù)組元素定位:Unsafe類中有很多以BASE_OFFSET結(jié)尾的常量,比如ARRAY_INT_BASE_OFFSET,ARRAY_BYTE_BASE_OFFSET等,這些常量值是通過arrayBaseOffset方法得到的。arrayBaseOffset方法是一個本地方法,可以獲取數(shù)組第一個元素的偏移地址。Unsafe類中還有很多以INDEX_SCALE結(jié)尾的常量,比如 ARRAY_INT_INDEX_SCALE,ARRAY_BYTE_INDEX_SCALE等,這些常量值是通過arrayIndexScale方法得到的。arrayIndexScale方法也是一個本地方法,可以獲取數(shù)組的轉(zhuǎn)換因子,也就是數(shù)組中元素的增量地址。將arrayBaseOffset與arrayIndexScale配合使用,可以定位數(shù)組中每個元素在內(nèi)存中的位置。

3、掛起與恢復

將一個線程進行掛起是通過park方法實現(xiàn)的,調(diào)用 park后,線程將一直阻塞直到超時或者中斷等條件出現(xiàn)。unpark可以終止一個掛起的線程,使其恢復正常。整個并發(fā)框架中對線程的掛起操作被封裝在 LockSupport類中,LockSupport類中有各種版本pack方法,但最終都調(diào)用了Unsafe.park()方法。

4、CAS操作

是通過compareAndSwapXXX方法實現(xiàn)的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67025.html

相關(guān)文章

  • Java多線程進階(十二)—— J.U.C之a(chǎn)tomic框架:Unsafe

    摘要:本身不直接支持指針的操作,所以這也是該類命名為的原因之一。中的許多方法,內(nèi)部其實都是類在操作。 showImg(https://segmentfault.com/img/remote/1460000016012251); 本文首發(fā)于一世流云的專欄:https://segmentfault.com/blog... 一、Unsafe簡介 在正式的開講 juc-atomic框架系列之前,有...

    趙連江 評論0 收藏0
  • Java魔法——Unsafe應(yīng)用解析

    摘要:典型應(yīng)用鎖和同步器框架的核心類,就是通過調(diào)用和實現(xiàn)線程的阻塞和喚醒的,而的方法實際是調(diào)用的方式來實現(xiàn)。 前言 Unsafe是位于sun.misc包下的一個類,主要提供一些用于執(zhí)行低級別、不安全操作的方法,如直接訪問系統(tǒng)內(nèi)存資源、自主管理內(nèi)存資源等,這些方法在提升Java運行效率、增強Java語言底層資源操作能力方面起到了很大的作用。但由于Unsafe類使Java語言擁有了類似C語言指針...

    reclay 評論0 收藏0
  • Java并發(fā)基礎(chǔ):了解無鎖CAS就從源碼分析

    摘要:該類將整數(shù)值與引用關(guān)聯(lián)起來,可用于原子的更數(shù)據(jù)和數(shù)據(jù)的版本號。 CAS的全稱為Compare And Swap,直譯就是比較交換。是一條CPU的原子指令,其作用是讓CPU先進行比較兩個值是否相等,然后原子地更新某個位置的值,其實現(xiàn)方式是基于硬件平臺的匯編指令,在intel的CPU中,使用的是cmpxchg指令,就是說CAS是靠硬件實現(xiàn)的,從而在硬件層面提升效率。 CSA 原理 利用CP...

    toddmark 評論0 收藏0
  • 神奇的Unsafe,你get了嗎

    摘要:它的目的是為了增強語言直接操作底層資源的能力,無疑帶來很多方便。這樣可以有效避免多線程環(huán)境下的同步問題。另外還有的匿名內(nèi)部類的生成,數(shù)組內(nèi)存操作等。 本文原創(chuàng)地址,我的博客:jsbintask的博客(食用效果最佳),轉(zhuǎn)載請注明出處! 簡介 Unsafe是jdk提供的一個直接訪問操作系統(tǒng)資源的工具類(底層c++實現(xiàn)),它可以直接分配內(nèi)存,內(nèi)存復制,copy,提供cpu級別的CAS樂觀鎖等操作...

    ideaa 評論0 收藏0
  • 【實戰(zhàn)Java高并發(fā)程序設(shè)計】連載1–Java中的指針:Unsafe

    摘要:不難看出,方法的內(nèi)部,必然是使用原子指令來完成的。它是一個內(nèi)部使用的專屬類。注意根據(jù)類加載器的工作原理,應(yīng)用程序的類由加載。加載器沒有對象的對象,因此試圖獲得這個類加載器會返回。 如果你對技術(shù)有著不折不撓的追求,應(yīng)該還會特別在意incrementAndGet() 方法中compareAndSet()的實現(xiàn)。現(xiàn)在,就讓我們更進一步看一下它把!public final boolean co...

    EasonTyler 評論0 收藏0
  • Java并發(fā)編程-原子實現(xiàn)

    摘要:前言為了研究對原子類的實現(xiàn),從類開始,分析如果對原子操作的實現(xiàn)。保存著基礎(chǔ)數(shù)據(jù),使用修飾,可以保證該值對內(nèi)存可見,也是原子類實現(xiàn)的理論保障。使用自旋鎖來處理并發(fā)問題。 前言 為了研究Java對原子類的實現(xiàn),從AtomicInteger類開始,分析Java如果對原子操作的實現(xiàn)。 什么是原子操作? 原子操作是指不會被線程調(diào)度機制打斷的操作;這種操作一旦開始,就一直運行到結(jié)束,中間不會有任何...

    gyl_coder 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<