java中synchronized关键字怎么使用
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,今天就跟大家聊聊有关java中synchronized关键字怎么使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。说明:java中的同步(sy
千家信息网最后更新 2025年01月23日java中synchronized关键字怎么使用
今天就跟大家聊聊有关java中synchronized关键字怎么使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
说明:
java中的同步(synchronized)是基于进入monitor对象和退出monitor对象来实现的,无论是显式同步还是隐式同步。
synchronized语句块:
1)(使用javap -c 类名)将class文件反编译后可以看到:同步块的入口位置和出口位置(方法结束处和异常处)分别插入了monitorenter字节码指令和monitorexit字节码指令,故同步代码块属于显示同步。2)线程执行到monitorenter指令时,尝试获取对象的锁。
synchronized方法:
1)JVM从Class文件中的方法结构(method_info)中的 ACC_SYNCHRONIZED 访问标志区分一个方法是否为同步方法,故同步方法属于隐式同步。2)当方法调用时,调用指令会检查方法的ACC_SYNCHRONIZED访问标志是否被设置,如果设置了,执行线程将先持有monitor,然后再执行方法,最后在方法完成时释放monitor。3)在方法执行期间,其它线程无法获取该monitor。4)如果一个同步方法执行期间抛出了异常,并且在方法内部无法处理此异常,那这个同步方法所持有的monitor将在异常抛到同步方法之外时自动释放。method_info 结构格式如下(java虚拟机规范中的摘录): method_info { u2 access_flags; // 用于定义当前方法的访问权限和基本属性的标志 u2 name_index; u2 descriptor_index; u2 attributes_count; attribute_info attributes[attributes_count]; } method_info结构中访问标记(access_flags)的取值: 标记名 值 说明 ACC_PUBLIC 0x0001 public,方法可以从包外访问 ACC_PRIVATE 0x0002 private,方法只能本类中访问 ACC_PROTECTED 0x0004 protected,方法在自身和子类可以访问 ACC_STATIC 0x0008 static,静态方法 ACC_FINAL 0x0010 final,方法不能被重写 ACC_SYNCHRONIZED 0x0020 synchronized,方法由monitor同步 ...获取锁和释放锁的内存原语: 当线程获取锁时,JMM会把该线程对应的本地内存置为无效。从而使得被monitor保护的临界区代码必须从主内存中读取共享变量。 当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中 即: 1将本地内存中的数据设置为无效, 2从主内存中将数据复制到本地内存中, 3在本地内存中进行操作, 4操作完成后将本地内存中的数据刷新到主内存中。整体看起来就像是直接在主内存中操作一样。synchronized的可重入性:1)当一个线程再次请求自己持有对象锁的临界资源时,这种情况属于重入锁,请求将会成功。2)由于synchronized是基于monitor实现的,故每次重入,monitor中的计数器仍会加1。
看完上述内容,你们对java中synchronized关键字怎么使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
方法
同步
内存
线程
对象
指令
内容
数据
标志
结构
关键
关键字
代码
位置
变量
字节
执行期
文件
成功
中将
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库防窜货系统批量定制
好房好家天津互联网科技有限公司
数据库整列四舍五入
电子表格带数据库
腾讯企业定制邮箱服务器
数据库的提交事务是为了什么
绵阳市广电局 网络技术
互联网科技大全
石家庄服务器数据恢复
近期国内网络安全形势
网评员 数据库
tracker服务器是啥
京东图片服务器
大数据软件开发价位
web服务器的全称叫啥
网络安全问题统计2017
赛亚网络安全绘画
数据库主要有哪些优化
电脑软件开发需求文档
软件开发购物车模块流程
软件开发论文怎么题目
曙光服务器 管理工具
网络安全危害社会身份表现
优秀软件开发人员事迹
贵阳市软件开发
网络技术专业专接本
网络安全法短视频
服务器java安装教程
广州国内网络技术开发公司
数据库自动重启了是什么意思