java 线程由浅入深_由浅入深,Java 并发编程中的 Synchronized(一)

synchronized 作用

synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。

1.1 作用:

确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,

保证共享变量的修改能够及时可见,获得锁的线程操作完毕后会将所数据刷新到共享内存区;

不解决重排序,但保证有序性。

1.2 用法:

修饰实例方法synchronized 关键词作用在方法的前面,用来锁定方法,其实默认锁定的是 this 对象。

f70c4c8a09a2ce24ecb80159a6e75274.png

修饰静态方法synchronized 还是修饰在方法上,不过修饰的是静态方法,等价于锁定的是 Class 对象。

a560282769ca9b3a6a5d4615491bdd93.png

修饰代码块用法是在函数体内部对于要修改的参数区间用 synchronized 来修饰,相比与锁定函数这个范围更小,可以指定锁定什么对象。

097ab7ab0d4806b6c1c02826ace2a7c7.png

总结:

synchronized 修饰的实例方法,多线程并发访问时,只能有一个线程进入,获得对象内置锁,其他线程阻塞等待,但在此期间线程仍然可以访问其他方法。

synchronized 修饰的静态方法,多线程并发访问时,只能有一个线程进入,获得类锁,其他线程阻塞等待,但在此期间线程仍然可以访问其他方法。

synchronized 修饰的代码块,多线程并发访问时,只能有一个线程进入,根据括号中的对象或者是类,获得相应的对象内置锁或者是类锁

每个类都有一个类锁,类的每个对象也有一个内置锁,它们是互不干扰的,也就是说一个线程可以同时获得类锁和该类实例化对象的内置锁,当线程访问非 synchronzied 修饰的方法时,并不需要获得锁,因此不会产生阻塞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php有哪些高级扩展,php扩展有哪些

什么是PHP扩展?为PHP提供一些扩展的功能常见的PHP扩展mysql-----提供给PHP操作MySQL数据库的功能gd2----动态创建图像xdebug-----跟踪、调试和分析PHP程序的运行状况查看PHP扩展1.使用phpinfo探针phpinfo()---输出关于PHP配置的信息输出PHP当前状态的大量信息&#…

php 图片系统,Linger

软件简介Linger 是 PHP 图片分享系统。一个精简的图片分享系统网站,采用Bootstrap前端框架,支持部分页面的移动端自适应。同时采用HTML5进行图片批量上传。使用了一个简单的时间线动态展示,可作为简易的图片社交社区。有一个完整的用户中心和…

php 传递类名,php 对象和数组序列化 serialize()返回字符串方便存储和传递 unserialize()反序列化 不丢失类型和结构...

现在开发中经常使用序列号和反序列化技术手段,php开发中也大量使用到。如下几个知名系统都使用了大量的序列化技术ecshop2. phpcms内容管理系统3.laravel框架一、序列号的目的?方便数组和对象的传输或存储,同时不丢失其类型和结构如下是ecsho…

python操作json字符串,超详细的Python文件操作知识

来自:CSDN,作者:南枝向暖北枝寒MA链接:https://blog.csdn.net/mall_lucy/article/details/104547365【导语】:python进行文件操作,在日常编程中是很常用的。为了方便大家,这里对各种文件操作的知…

php头尾分离,laravel怎么做模板的头尾分离

关注博主,每天分享项目实战经验1.首先找到页面的公共部分,放在layouts这个目录下的home.blade.php2.设置内容区域yield(content)3.在其他页面使用模板引擎,先继承,然后在使用section即可extends(layouts.home)section(content)I a…

log4j日志 linux配置,Log4j 日志详细用法

简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地、日志信息的输出格式Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。程序员经常会遇到脱离Java ide环…

linux qtcreator输入中文,新版QT creator下解决fcitx无法输入中文问题(QTcreatorV4.1.0)...

Preface新版本的QT creatorV4.0.0之后,就QT creator结构本身就发生了很大的变化,许多文件路径以及结构都发生了较大的变化。因此,fcitx的qt5库位置也发生了变化,但是原理还是一样的,都是需要一个动态依赖库&#xff1a…

lisp 读取dwg 统计信息_预制梁厂 BIM 技术和自动化、信息化应用方案

一、使用 Planbar 桥梁模块进行 BIM 模型创建Planbar是德国内梅切克软件工程有限公司专门针对混凝土图纸构件的软件产品,通过三十多年专注于预制构件设计工作所累积的经验,PLANBAR 实现了无与伦比的规划深度。PLANBAR 支持 40 种以上的数据交换形式&…

windows os x linux比较,对比测试:Ubuntu 11.04 vs Win7 vs OS X 10.7

今天我们带来了关于Ubuntu 11.04,Windows 7,Mac OS X 10.7的对比测试,包括图片编辑、视频编码、多任务测试等。本次测试是在同一机子上展开的,这样避免了硬件的因素影响。Ubuntu 11.04,Mac OS X 10.7硬件参数&#xff…

简述osi参考模型各层主要功能_OSI网络模型

OSI七层模型和TCP/IP五层模型 一、OSI参考模型 1、OSI的来源 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。 ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有…

linux中vi基础知识,Vim入门基础知识集锦

想学习Vim,但是Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础。在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来。特点是偏向基础,但对入门者来说足够全面&#xff…

数学式子对应的c语言表达式是,把数学式写成C语言表达式

(1) 3.26*exp(x)1.0/3.0*pow((ab), 4)(2) 2*sqrt(x)(ab)/(3.0*sin(x))(3) g*m1*m2/(r*r)(4) double pi 3.142.0*pi*r pi*r*r cos(45.0*pi / 180.0 )(5) loan * rate * pow( (1rate) , month ) / ( pow( (1rate) , month) - 1)扩展资料:指针:如果一个变…

pandas 每一列相加_Python3 numpy amp; pandas 学习笔记

写在前面在用python做一些ML和DL的工作前,先看莫烦大佬的视频学习一下numpy和pandas这两个数据处理包,学习中记了一些笔记,便于自己日后查阅,同时发布到知乎希望能够帮助到其他小伙伴!视频如下:Numpy &…

c语言学生成绩查询系统2018,南昊网上阅卷学生成绩查询系统

2018南昊网上阅卷学生成绩查询系统开放了,这是面向南昊当地的中小学生们的一款优质的查询学习成绩的平台,只要登录自己的账号就能查询自己的成绩排名情况。对于老师来说这也是一款网上阅卷系统,是一个非常幼稚的学习平台。家长也可以登录本平…

python3 批量定义多个变量_Python3 基本数据类型详解

文章来源:加米谷大数据Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号…

控制cpu_I/O控制器及控制方式,了解一下

1、什么是I/O控制器由于CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制,这个电子部件就是I/O控制器,又称为设备控制器。I/O控制器是控制计算机输…

图形化c语言编程,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…

fpga初始化错误_FPGA低温启动失败

本文来源:https://blog.csdn.net/shanekong/article/details/29923925现象描述在给 medium 板光端机做低温试验时,分别给发送版、接收板断电重新启动,发现有的板子在 -40 可以启动,而有些板子在 -20 都不能启动,需要升…

机器人最新天赋符文天赋加点图_常德2020中小学机器人竞赛开赛 286名选手现场比拼技能...

尚一网讯(记者 肖志芳 文/图)自己设计机器人,还要操控他们完成各项高难度动作进行竞技对抗,这似乎挺难,但是许多中小学生却对此游刃有余。10月11日,常德市2020年中小学机器人竞赛在武陵区第一小学举行,来自全市143支代…

cmd imp导入dmp文件_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤...

正如标题一样,本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!!&…