Java并发中如何证明偏向锁

发布时间:2021-10-20 09:25:11 作者:柒染
来源:亿速云 阅读:115

本篇文章为大家展示了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

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

上述内容就是Java并发中如何证明偏向锁,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. Java Synchronized 锁的实现原理与应用 (偏向锁,轻量锁,重量锁)
  2. Java锁的升级策略 偏向锁 轻量级锁 重量级锁

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:怎么将自由风格项目转换为管道项目CI/CD

下一篇:svn卓繁打包工具是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》