你所了解又并不是很了解的并发锁——synchronized

news/2024/7/7 16:26:27

共享资源在多线程下要保证安全,从而引入并发锁,在多进程中,则为分布式锁。
多线程环境里面,假如有一个共享int变量i。如下两个线程都对,i++,那么结果有可能是1,有可能是2
在这里插入图片描述
那么此时就可以使用synchronized 关键字。
但是加锁后,并行就变成了串行,降低了效率,那么我们就要考虑锁的粒度,实际上就是锁的范围。比如数据库中,select …for update,那我们是锁某一行的数据。

如何控制synchronized 锁的粒度呢?

锁的范围:对象锁、类锁。 类锁范围更大。
在这里插入图片描述

所以,我们的作用范围是取决于,括号里面的作用域。
比如,像下面这样
在这里插入图片描述
那么它的作用范围是哪里面?我们认为,它和没有加锁一样,因为每次调用这个方法,都是会生成一个新的对象。<


http://www.niftyadmin.cn/n/925564.html

相关文章

Git如何解决本地冲突(纯净版)

第一步、拉取远程最新代码 git fetch -a第二步、切换到源分支 如果本地有源分支 git checkout branch_new如果本地没有源分支 git checkout -b branch_new origin/branch_new第三步、合并代码 此处&#xff0c;不要使用fast-forward容易&#xff0c;覆盖合并 git merge -…

jdk1.8 Jmap pid info- 37103 interned Strings occupying 4038832 bytes ,String intern()方法

Heap Configuration: //堆内存初始化配置MinHeapFreeRatio = 40 //堆最小空闲比率MaxHeapFreeRatio = 70 //堆最大空闲比率MaxHeapSize = 2147483648 (2048.0MB) //堆最大空间NewSize = 715784192 (682.625MB) //堆新生代的默认…

详细年龄 生日倒计时

脚本说明&#xff1a; 把如下代码加入<body>区域中: <SCRIPT LANGUAGE"JavaScript"> <!-- Begin function run() { with (document.agecalc) { dd parseInt(day.selectedIndex) 1; mm parseInt(month.selectedIndex) 1; yy year.value; if (yy.…

kyro序列化踩坑记——提供方DTO新增字段,依赖方则报错

背景 A服务通过dubbo调用B服务&#xff0c;序列化方式选择的是kryo&#xff0c;A服务和B服务同时依赖C工程的一个DTO。 C工程的DTO新增了一个字段&#xff0c;deploy了&#xff0c;B服务引了最新的依赖。但是A服务并没有。 此字段&#xff0c;A服务并使用不上&#xff0c;也不…

显示特殊节日

<html> <head> <title>显示特殊节日脚本</title> </head> <body> <div align"center">显示特殊节日&#xff0c;如“五一”</div> <SCRIPT languagejavascript> <!-- calendar new Date(); d…

学会享受寂寞,才能享受爱情

每个人生下来就在和“与世隔绝”作斗争&#xff0c;所以我们害怕寂寞&#xff0c;需要同伴&#xff0c;甚至渴望爱情。 实际上&#xff0c;爱情的作用在于&#xff1a;把一个人牢牢的绑在身边&#xff0c;让Ta陪伴自己。在一时或一世间&#xff0c;忘记寂寞。 所以&#xff0c;…

网站的停留时间

<html> <head> <title>显示你的客户在你的站点逗留了多久</title> </head> <body> <form nameforms> <font size3> <CENTER> <div aligncenter> <p> …

window.open的所有参数

【1、最基本的弹出窗口代码】 <SCRIPT LANGUAGE"javascript"> <!-- window.open (page.html) --> </SCRIPT> 【2、经过设置后的弹出窗口】 下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了…