栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java并发系列:详解Synchronized关键字

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java并发系列:详解Synchronized关键字

一、简介

为了提高效率,出现了多线程并发执行,并发执行处理共享变量就会带来安全性问题。那么,在java关键字synchronized就具有使每个线程依次排队操作共享变量的功能。很显然,这种同步机制效率很低,但synchronized是其他并发容器实现的基础,对它的理解也会大大提升对并发编程的感觉。

二、synchronized实现原理 2.1 monitor机制 2.1.1 Java对象头

Java中每个对象都有他的对象头,并且synchronized用的锁是存在对象头中的。

  • Klass Word 指明对象的类型
  • Mark Word 存储hashCode或锁信息

  • 对于数组对象,还需要32位存储数组长度(32位虚拟机);
  • 所以在java中,int类型和Integer类型所占的大小是不同的,int占4个字节,Integer是对象,本身8个字节和存储的值4个字节,总共占12个字节;
2.1.2 monitor

  • 线程去执行临界区代码;
  • Thread-2先获得锁,成为monitor的主人,其他线程都要到blocked队列中等待;

  • 不加synchronized关键字,对象不会关联monitor,也就不会有上述情况。也就是说,被加锁的对象,才会关联monitor,那么多个线程操作这个对象,就会有上述情况。
2.2 synchronized内存语义 2.3 synchronized的happens-before关系 三、synchronized拓展优化 3.1 CAS操作 3.2 锁升级 四、参考资料

1、Java并发编程的艺术 方腾飞等著;
2、黑马JUC编程;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号