JAVA Synchronized对象锁和类锁区别(牛逼)

一个类就像一个四合院,四合院的大门叫做构造方法,盖房子必须经过大门,每new一个对象,就表示在四合院里再盖一间新房子,大门上面的锁,叫做构造锁,里面每一间房子就是一个实例,每间房子里边都有一个锁叫做实例锁。

四合院里有厕所,水龙头,洗衣机等等都是公共设施,都叫做static资源)你想获得洗衣机,就需要调用static的洗衣机方法,也就是行为)

假如一天来了3个人租房子,第一个人租了一间小房子,那么他就获得一个实例(第一间房子),第二个人也租了一间房子,那么也获得一个实例(第二间房子),如果第三个人想租房子,他看第一间房子比较好,采光各方面都不错,他想租这个,但是呢,第一间房子已经租出去了,但是他不讲道理,闯着非要住,第一间房的住户正在家里吃馒头,没有锁门,这个人直接冲进来,说要租房子,看人家吃馒头,他随手直接吃了一个,然后第一个人就不够吃了,于是第一个人给他讲道理,说你没道德(你写代码肯定bug多),但是呢,第二个人根本就不吊他。过了几天第三个人又跑来,看他正在和老婆玩耍,门没锁,就直接冲进来,也想玩耍,然后就被第一个人打出来了,第一个人很扫兴,于是想出来一个办法,每次进屋后就把门锁了,这样第三个人想进来也进不来,就得等着,除非第一个人出来之后,别人才能进去。假如第一个人睡着了(sleep(xxx))外面的人可能就会等好久。

有一天房东的老太太嫌烦,不想租房子了,就要求儿子把大门锁了,因此就不能租房子了,租房子必须经过大门,大门都锁了,还租个屁。因此构造方法都锁定了,还实例鸡毛对象。哈哈。

水龙头和游泳池都是属于当前这个四合院的,因此在java中要想使用 这些公共设施,前提你得告诉程序,你要使用哪个四合院的公共设施,四合院.水龙头 ,使用对象.的方式告诉程序。

假如说房东不想让这些住户使用水龙头,他就可以给水龙头上一把锁,给水龙头上锁,和给其它房子上锁完全是两个不同的对象,因此,锁定水龙头和锁定实例不互斥。这就是Synchronized对象锁和类锁区别

相关推荐
starzy199031 分钟前
深入理解Scala可变Map:动态构建场景下的性能与设计权衡
开发语言·scala
奶油话梅糖1 小时前
打开项目 0.9 秒、内存只有 IDEA 的 1/12:OpenIDEA 用 Rust 把 IntelliJ IDEA 重造了一遍
java·rust·github·intellij-idea
vipxieliang1 小时前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
Rain的Java大神之路1 小时前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
golang学习记1 小时前
IDEA 2026.3 远程开发迎来重磅升级
java·ide·intellij-idea·远程开发
天天被压力1 小时前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
敲代码的小小酥2 小时前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
天天被压力2 小时前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
zhanghaha13142 小时前
C# 系列教程_7 判断语句(分支)保姆级精讲
开发语言·c#
apcipot_rain2 小时前
C++转Java日记(02)
java·开发语言·c++