类锁与对象锁的致命区别揭秘

发布时间:2026/10/18 13:22:47

类锁与对象锁的致命区别揭秘 4. 现在的人直接看懂的普通话书面语来说, 同步加锁的是对象, 而不是代码部分。因此, 当你的类里面存在一个同步方法的时候, 这个方法有可能被两个完全不同的线程同时执行。实现这种情况的前提条件是, 每一个线程都必须自己创建一个这个类的实例,也就是每个线程持有的并不是同一个对象实例。所以, 只要满足每个线程各自创建独立该类的这种条件, 那么上述提到的那个同步方法的并发执行局面就会出现。5. 不同的对象实例所对应的方法, 它们之间是不存在互相干扰的情况的。这也就是说, 其他的线程仍然能够同时地访问属于同一个类的另一个对象实例中的相关方法。6. 关键字是不能继承的, 这一点大家要弄清楚, 也就是说, 当存在一个基类的方法 f(){}时, 在把它拿去给继承类的过程中, 它并不会自动变成继承类里面的 f(){}这种形式, 而是会发生一些变化, 变成了 f(){}的样子, 针对这种情况, 继承类这边是需要你来显式地去指定它的某一个方法就是那个方法。7.当你去给一个全局静态的对象加锁, 或者说是给某个类的本身这个层次的东西加上同步保护机制的时候, 这种保护动作其实是对所有存在的对象实例都产生影响的, 也就是说是整个类层面的控制。类锁举例我们对那个属于全局范围的东西, 给它加上一个锁头。1 public class MySynchronized extends Thread2 {3 private int val;45 private static Object lock new Object();67 public MySynchronized(int v)8 {9 val v;10 }1112 public void printVal(int v)13 {14 synchronized (lock)15 {16 while (true)17 {18 System.out.println(v);19 }20 }21 }2223 public void run()24 {25 printVal(val);26 }27 }对整个类加锁1publicclassMySynchronizedextendsThread2{3privateintval;45publicMySynchronized(intv)6{7 val v;8}910publicvoidprintVal(intv)11{12synchronized(MySynchronized.class)13{14while(true)15{16System.out.println(v);17}18}19}2021publicvoidrun()22{23printVal(val);24}25 }另外的锁例子常量的这种特殊的地方, 在于它和同一个对象是紧密相关的。public class MySynchronized extends Thread{private String name;private String val;public MySynchronized(String name, String v){this.name name;val v;}public void printVal(){synchronized (val){while (true){System.out.println(name val);}}}public void run(){printVal();}public static void main(String args[]){MySynchronized f1 new MySynchronized(Foo 1:, printVal);f1.start();MySynchronized f2 new MySynchronized(Foo 2:, printVal);f2.start();}}这里所给出的, 是关于那个针对静态方法以及针对非静态方法的一个总结性的东西, 它俩之间存在着一个非常明显的区别。/** 非静态方法:* 给对象加锁(可以理解为给这个对象的内存上锁,注意 只是这块内存,其他同类对象都会有各自的内存锁),这时候* 在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥* 静态方法:* 相当于在类上加锁(*.class 位于代码区,静态方法位于静态区域,这个类产生的对象公用这个静态方法,所以这块* 内存N个对象来竞争), 这时候,只要是这个类产生的对象,在调用这个静态方法时都会产生互斥*/
延伸阅读

更多相关文章

2026/10/18 13:17:47

Space Bunny实测:0.03x倍率匿名反馈工具到底值不值得买?

Space Bunny 的限时折扣还剩两天,这几天后台私信里至少有七八个人在问同一个问题:那个 0.03x 倍率的“匿名兔”,到底值不值得买?不怪大家犹豫,折扣信息里全是营销话术,什么“匿名互动”“效率倍率”“轻松收…

2026/10/18 13:17:47

累计20亿融资背后:B2B硬科技公司的融资节奏与股东结构

一家公司把“累计20亿融资”和“股东名单”同时亮出来,业内关注点往往不在金额本身,而在那张名单的构成逻辑:有产业巨头、有顶级美元基金、有专注早期的科技VC,也有成长期机构。至简动力作为一家动力系统解决方案公司,…

2026/10/18 17:08:31

Mathcad v15中文版:工程计算软件如何把公式变成可复核的计算书

简介:Mathcad v15.0M050中文版是一款专业工程计算软件,面向机械、土木、电子及数据分析等领域的工程师和科研人员,将公式输入、数值与符号计算、图形绘制、文本注释和报告排版整合在同一界面,可直接处理线性代数、微积分、概率统计…

2026/10/18 17:08:31

知识工作插件化:从Claude Code到VS Code的原子能力架构

1. 项目概述:从“knowledge-work-plugins”看知识工作者的插件化工作流演进“knowledge-work-plugins”这个名称乍看像一个技术名词,实则精准锚定了当下知识型从业者最真实的痛点——不是缺工具,而是工具之间彼此割裂;不是没信息&…

2026/10/18 17:08:31

安全审计能力模型:从经验驱动到可验证、可传承的工程化实践

1. 这不是“查漏洞”的流水线,而是安全审计能力的底层操作系统“security-audit-skill”这个名称乍看像一个工具包或脚本集合,但在我带团队做过27次金融级系统审计、亲手写过4套内部审计框架之后,我越来越确信:它根本不是某个具体…

2026/10/18 17:08:31

大模型Agent记忆系统实战指南:上下文管理、向量检索与遗忘机制

我不太喜欢用“记忆”这个词来描述大模型应用里的缓存机制,因为大部分人第一次给自己的Agent加记忆时,都把问题想得太简单了——不就是把聊天记录存起来,下次再塞回去吗?我一开始也是这么干的,结果做出来的东西不仅回答…

2026/10/18 17:08:31

论文AIGC检测率99.8%怎么降?从检测原理到写作重构实操指南

论文提交当天我就觉得稳了,查重率一遍过,格式也没问题,结果导师在群里扔来一张截图:AIGC检测报告,疑似AI生成内容99.8%。整个宿舍安静了三秒钟。这不是个别案例,这届本科生几乎人人要过一关:毕业…

2026/10/18 17:03:31

ASIC芯片选型指南:从AI推理的能效比到落地成本权衡

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑