Java并发中如何证明偏向锁
本篇文章为大家展示了Java并发中如何证明偏向锁,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联公司主营修水网站建设的网络公司,主营网站建设方案,成都app软件开发,修水h5小程序设计搭建,修水网站营销推广欢迎修水等地区企业咨询
glibc 重新编译
1.1 初始化环境
glibc版本: ldd --version
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
系统环境版本:
yum -y install lrzsz
1.2 重新编译glibc库文件
1.2.1、这里glibc版本: glibc-2.19.tar.gz
1.2.2、解压: tar -zxvf glibc-2.19.tar.gz
1.2.3、找个这个文件: /glibc-2.19/nptl/pthread_mutex_lock.c
1.2.4、修个这个文件: __pthread_mutex_lock 此方法
fprintf(stderr,"msg tid=%lu\n",pthread_self());
添加此包,不要忘记
#include
未来任何线程调用pthread_mutex_lock()都会打印msg tid=123456677(tid)
1.2.5、覆盖pthread_mutex_lock.c
修改权限664 --> chmod -R 664 pthread_mutex_lock.c
执行命令:../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之后会导致系统命令不可用。
编译: make
编译: make install
编译结果: 测试下
说明 到此已经成功了,下面看看当前glibc版本: ldd --version
当前版本就是我上传的 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并发中如何证明偏向锁,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
当前名称:Java并发中如何证明偏向锁
网站URL:http://scyanting.com/article/jophsc.html