Java并發(fā)中如何證明偏向鎖

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

創(chuàng)新互聯(lián)公司主營(yíng)修水網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開發(fā),修水h5小程序設(shè)計(jì)搭建,修水網(wǎng)站營(yíng)銷推廣歡迎修水等地區(qū)企業(yè)咨詢

glibc 重新編譯

1.1 初始化環(huán)境

glibc版本: ldd --version

Java并發(fā)中如何證明偏向鎖

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

系統(tǒng)環(huán)境版本:

Java并發(fā)中如何證明偏向鎖

yum -y install lrzsz

1.2 重新編譯glibc庫文件

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

Java并發(fā)中如何證明偏向鎖

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

Java并發(fā)中如何證明偏向鎖

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

Java并發(fā)中如何證明偏向鎖

1.2.4、修個(gè)這個(gè)文件: __pthread_mutex_lock 此方法

Java并發(fā)中如何證明偏向鎖

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

添加此包,不要忘記

#include <stdio.h>

Java并發(fā)中如何證明偏向鎖

未來任何線程調(diào)用pthread_mutex_lock()都會(huì)打印msg tid=123456677(tid)

1.2.5、覆蓋pthread_mutex_lock.c

修改權(quán)限664 --> chmod -R 664 pthread_mutex_lock.c

Java并發(fā)中如何證明偏向鎖

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

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

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

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

--with-binutils=/usr/bin 參數(shù):指定Binutils 程序目錄路徑。這個(gè)參數(shù)并不是必需的,但它們能保證在編譯 Glibc 時(shí)不會(huì)用錯(cuò) Binutils 程序。

有些安裝方法是編譯時(shí)候指定的目錄不是/usr,而是通過建立軟鏈指向新的libc-2.18.so版本,在此過程中需要?jiǎng)h除原來連接,建立新的軟連接,但是此處有一個(gè)大坑,就是當(dāng)你刪除libc.so.6之后會(huì)導(dǎo)致系統(tǒng)命令不可用。

Java并發(fā)中如何證明偏向鎖

編譯: make

Java并發(fā)中如何證明偏向鎖

編譯: make install

編譯結(jié)果: 測(cè)試下

Java并發(fā)中如何證明偏向鎖

說明 到此已經(jīng)成功了,下面看看當(dāng)前glibc版本: ldd --version

Java并發(fā)中如何證明偏向鎖

當(dāng)前版本就是我上傳的 glibc 2.1.9。

1.3 擴(kuò)展知識(shí)pthread_mutex_lock.c

  • int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)創(chuàng)建一個(gè)鎖;

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

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

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

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

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

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

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

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

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

  • int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,int __protocol)設(shè)定鎖對(duì)線程優(yōu)先級(jí)的影響策略;

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

上述內(nèi)容就是Java并發(fā)中如何證明偏向鎖,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:Java并發(fā)中如何證明偏向鎖
網(wǎng)頁URL:http://muchs.cn/article32/jophsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站排名自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、Google、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化