中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java并發中如何證明偏向鎖

發布時間:2021-10-20 09:25:11 來源:億速云 閱讀:116 作者:柒染 欄目:大數據

本篇文章為大家展示了Java并發中如何證明偏向鎖,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

glibc 重新編譯

1.1 初始化環境

glibc版本: ldd --version

Java并發中如何證明偏向鎖

gcc 安裝: yum -y install gcc

檢查yum中openjdk版本: yum search java | grep -i --color jdk

openjdk 安裝: yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64

系統環境版本:

Java并發中如何證明偏向鎖

yum -y install lrzsz

1.2 重新編譯glibc庫文件

1.2.1、這里glibc版本: glibc-2.19.tar.gz

Java并發中如何證明偏向鎖

1.2.2、解壓: tar -zxvf glibc-2.19.tar.gz

Java并發中如何證明偏向鎖

1.2.3、找個這個文件: /glibc-2.19/nptl/pthread_mutex_lock.c

Java并發中如何證明偏向鎖

1.2.4、修個這個文件: __pthread_mutex_lock 此方法

Java并發中如何證明偏向鎖

fprintf(stderr,"msg tid=%lu\n",pthread_self());

添加此包,不要忘記

#include <stdio.h>

Java并發中如何證明偏向鎖

未來任何線程調用pthread_mutex_lock()都會打印msg tid=123456677(tid)

1.2.5、覆蓋pthread_mutex_lock.c

修改權限664 --> chmod -R 664 pthread_mutex_lock.c

Java并發中如何證明偏向鎖

執行命令:../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

--disable-profile 參數:編譯庫但不包含分析信息。如果臨時工具需要分析信息則忽略此選項。

--enable-add-ons 參數:指示 Glibc 使用附加的 NPTL 包作為線程庫。

--with-headers=/usr/include 參數:告訴 Glibc 利用剛剛安裝在 usr 文件夾中的頭文件編譯自身,此能夠根據內核的具體特性提供更好的優化。

--with-binutils=/usr/bin 參數:指定Binutils 程序目錄路徑。這個參數并不是必需的,但它們能保證在編譯 Glibc 時不會用錯 Binutils 程序。

有些安裝方法是編譯時候指定的目錄不是/usr,而是通過建立軟鏈指向新的libc-2.18.so版本,在此過程中需要刪除原來連接,建立新的軟連接,但是此處有一個大坑,就是當你刪除libc.so.6之后會導致系統命令不可用。

Java并發中如何證明偏向鎖

編譯: make

Java并發中如何證明偏向鎖

編譯: make install

編譯結果: 測試下

Java并發中如何證明偏向鎖

說明 到此已經成功了,下面看看當前glibc版本: ldd --version

Java并發中如何證明偏向鎖

當前版本就是我上傳的 glibc 2.1.9。

1.3 擴展知識pthread_mutex_lock.c

  • int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)創建一個鎖;

  • int pthread_mutex_destroy (pthread_mutex_t *__mutex)銷毀鎖;

  • int pthread_mutex_trylock (pthread_mutex_t *__mutex)嘗試去lock,lock不到時立即返回錯誤;

  • int pthread_mutex_lock (pthread_mutex_t *__mutex)嘗試去lock,lock不到時永久等待;

  • int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime)嘗試去lock,lock不到時等待__abstime的時間;

  • int pthread_mutex_unlock (pthread_mutex_t *__mutex)釋放一個鎖;

  • int pthread_mutexattr_init (pthread_mutexattr_t *__attr)初始化鎖參數;

  • int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)銷毀鎖參數

  • int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,int __pshared)設定鎖的進程共享屬性;

  • int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)設定鎖的加鎖類型;

  • int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,int __protocol)設定鎖對線程優先級的影響策略;

看到上面這面方法名字是不是狠親切,跟java j.u.c 里面方面是不是很像

上述內容就是Java并發中如何證明偏向鎖,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海盐县| 桃源县| 临颍县| 手机| 景洪市| 合肥市| 德阳市| 通化县| 老河口市| 阳高县| 简阳市| 景洪市| 阳春市| 吉安市| 丽水市| 宿迁市| 嘉定区| 广西| 克拉玛依市| 满城县| 乌什县| 永兴县| 武川县| 慈溪市| 阳曲县| 厦门市| 如皋市| 会泽县| 屏东县| 凌海市| 县级市| 阜平县| 正镶白旗| 弋阳县| 盐边县| 海南省| 田林县| 株洲县| 桐城市| 托克托县| 南和县|