【*一篇足以*Java并发编程实践】《Java并发编程实践》学习Note - Part3

article/2025/2/6 5:47:16

目录:

1.避免活跃度危险

1.1 死锁

1.2 避免和诊断死锁

1.3.其他活跃度危险

2.性能和可伸缩性

2.1 内存同步

2.2 阻塞

2.3 减少锁的竞争

3.Lock、ReentrantLock和Synchronized

3.1 可轮询和可定时的锁请求

3.1 可中断的锁获取操作

4.原子变量与非阻塞同步机制

5. JMM--Java存储模型


1.避免活跃度危险

安全性和活跃度通常相互牵制。使用锁来保证线程安全,但是滥用锁可能引起锁顺序死锁;使用线程池和信号量来约束资源的使用,但是却可能使活动形成资源死锁

1.1 死锁

当一个线程永远占有一个锁,而其他线程尝试去获得这个锁,那么它们将永远被阻塞。当线程A占有锁L时,想要获得锁M,但是同时,线程B持有锁M,并尝试获得锁L,两个线程将永远等待下去。这种情况是死锁最简单的形式(致命的拥抱,deadly embrace)。发生在多个线程因环路的锁依赖关系而永远等待的情况下。与很多其他的并发危险相同,死锁很少能被立即发现。一个类如果有发生死锁的潜在可能并不意味着死锁每次都将发生,它只发生在该发生的时候。当死锁出现的时候,往往是遇到了最不幸的时候----在高负载之下。

DB系统的避免死锁设计:一个事务(transaction)可能需要获取锁,并可能一直持有这些锁,直到所有事务都提交。DB的处理:当DB监测到一个事务集发生了死锁(通过在表示==正在等待(is-waiting-for)==关系的有向图上搜索循环),它会选择一个牺牲者,使它退出事务。这个牺牲者释放的资源,使得其他事务能够继续进行。应用程序可以重新执行那个被强行退出的事务,现在这个事务可能就能够成功完成了,因为所有跟它竞争资源的事务都已经完成了。

JVM的处理:当一个Java线程集发生死锁时,“游戏”到此结束—这些线程永远不能再使用了。根据线程完成的不同工作,application可能完全停止或特定子系统停止,可能是性能收到影响。恢复application健康的唯一方式就是中止并重启,然后寄希望于不要再发生同样的事情。

 1.1.1 锁顺序死锁

1.1.2 动态的锁顺序死锁

在这里插入图片描述 

1.1.3 协作对象间的死锁

1.1.4 开放调用

1.1.5 资源死锁

 

1.2 避免和诊断死锁

1.2.1 尝试定时的锁

1.2.2 通过线程转储分析死锁

1.3.其他活跃度危险

1.3.1 饥饿

1.3.2 弱响应性

1.3.3 活锁

2.性能和可伸缩性

2.1 内存同步

2.2 阻塞

2.3 减少锁的竞争

2.3.1 缩小锁的范围(“快进快出”)

2.3.2 减少锁的粒度

2.3.3 分离锁

2.3.4 避免热点域

2.3.5 独占锁的替代方式

2.3.6 减少上下文的切换

2.3.7  向对象池说“不”

======================高级部分==============================

3.Lock、ReentrantLock和Synchronized

3.1 可轮询和可定时的锁请求

3.1 可中断的锁获取操作

4.原子变量与非阻塞同步机制

5. JMM--Java存储模型


http://chatgpt.dhexx.cn/article/F3llMWsx.shtml

相关文章

阿朱说:咨询的历史(万字深度长文)

(1)知识成为资产:瓦特蒸汽机 13世纪的英国,首先产生了人类历史上的第一部专利保护法。不过最初是很粗糙的,授予专利的权力完全掌握在国王手中,发放专利特许证,将某种独占经营权授予工匠、商人&a…

SpringBoot + Thymeleaf 练手小项目 --------- 豆瓣网站模拟

目录 一、项目介绍二、资源准备1. 准备数据库表2. 准备image、css、js等静态资源文件3. 项目结构 三、开发步骤1. 新建项目2. pom.xml3. 实体类 model4. Mapper 类5. service 类6. 首页 index.html 开发① MovieController② index.html 7. 电影详情页 movie_info.html 开发① …

Jmeter - webSocket 压力测试笔记

概述 编程的内核是数学,而测试的本质是计算,专业名词叫容量预估,而测试的大体就是用程序模拟程序,检测程序的正确性,有两个点需要注意,QPS最佳值和系统接收最大值,根据测试数据的反馈&#xff…

应用密码学(张仕斌)第五章

序列密码体制 引言Vernam(弗纳姆)密码技术 1917年美国电话电报公司的GilbertVernam为电报通信设计了一种十分方便的密码技术。后来称之为Vernam密码技术. 它是一种代数密码技术:其加密方法是,将明文和密钥分别表示成二进制序列&am…

SQL调优指南笔记8:Optimizer Access Paths

本文为SQL Tuning Guide第8章“优化访问路径”的笔记。 重要基本概念 access path The means by which the database retrieves data from a database. For example, a query using an index and a query using a full table scan use different access paths. 数据库从数据库…

2023年还在问前端怎么学?一份前端学习指南

🍭 Hello,我是爱吃糖的范同学 因为疫情摆烂了许久,学校里又有许多大大小小的烦心事要处理(特别是作业和期末考试😫),所以在博客文章的更新上很长一段时间都没有输出很正经的文章了,…

【前端圭臬】一:写给入坑前端的你

专栏目录 导论 【前端圭臬】一:写给入坑前端的你 HTML 篇 【前端圭臬】二:你知道的和不知道的 HTML CSS 篇 【前端圭臬】三:详解 CSS 选择器 【前端圭臬】四:CSS 核心机制——如何确定一个属性的值? 【前端圭臬】…

【前端是什么】

前端是什么? 文章目录 前端是什么?1.前端的概念2. 前端的分类3. 前端的工作流程4. 互联网企业的典型组织结构图 1.前端的概念 1.1 前端的定义 对于网站来说,通常是指网站的前台部分,包括网站的表现层和结构层(通俗点就…

前端什么知识点最难学?

这个最就很难判断,每个人的理解程度不一致,但有两种人,觉得难的他还没学会,会的不觉得难,但是前端不一样了,会了也难,因为谁都对前端提点建议(啥也不懂的老板、产品经理、项目经理、…

【前端】一个好看的前端页面

序言 突发奇想,看到这个特效还不错,就加工了一下,如果也能帮到你,很开心 先上效果图 部分代码讲解 前端生成uuid function getUUID(len, radix) {var chars 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.s…

从零学前端第一讲:前端开发是什么?给初学者有什么建议?

这里是修真院前端小课堂,本篇分析的主题是 【从零学前端第一讲:前端开发是什么?给初学者有什么建议?】 初识前端 1、前端开发是什么? 2、前端开发有前途吗? 3、前端开发哪里学? 4、前端发展…

前端是什么

此为小白浅显整合: 一直以来,对前端一直是一个笼统的概念,于是,专门花时间整合了网上各种说法,给自己一个较正确的定位。 前端是什么?? 前端,也称web前端。对于网站来说&#xff0…

怎么才能学好前端?

你如果知道简单的问题要百度,已经强过一部分人了。 至于学习方法,有些经验分享给你: 1.在学习的过程中,最好不是仅仅停留在前端与移动开发表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的…

web 前端入坑第一篇:web前端到底是什么?有前途吗

web前端到底是什么? 某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> …

前端工程化详解——理解与实践前端工程化

前言: 前端工程化一直是一个老生常谈的问题,不管是面试还是我们在公司做基建都会经常提到前端工程化,那么为什么经常会说到前端工程化,并没有听过后端工程化、Java工程化或者Python工程化呢?我们理解的前端工程化是不是…

适合我的前端学习路线(学习前端不迷路)

适合我的前端学习路线(学习前端不迷路) 小伙伴们想学习前端,但是却不知如何入手,上网查前端学习路线,第一页往往充斥着各种培训公司的广告,又或者是搜前端学习路线图时,出现大量的路线图导致你还…

前端工程师行业现状怎么样?前景如何?

前端工程师行业现状怎么样?前景如何?前端即网站前台部分,运行在PC端移动端等浏览器上展现给用户浏览的网页。前端市场远没有饱和,现在的市场状况需求量非常多薪资可观。小编将通过官方数据宏观的给大家分析一下前端这个行业。 一…

快毕业了,很多人都不推荐做前端,前端业内最真实情况是什么样的?

偶尔出现这样一种说法,前端热度已经降低了,前端市场已经饱和了,前端工作没有那么好找了。 部分事实确实如此,大概是在2014-2018年,那时候前端技术刚刚崛起,相对来讲工作较现在更容易找到。 随着前端技术的发展及人才需求结构的成熟,现在已经不是会做动态网页就能找到工…

传智教育|一文读懂什么是前端?未来前景怎么样?(附前端学习路线图)

互联网高薪岗位众多,之前被大家津津乐道的后端工程师似乎慢慢不吃香了,原因是:过于内卷。 而为了打破目前内卷的局面,很多小伙伴在转行的时候就开始考虑起了前端工程师,这个岗位相比起后端的学习来说,难度…

我适不适合学前端?看完老程序员的这篇文章给你答案

什么是前端?什么又是后端呢? 1,在你机子上(PC端/手机端)看到的界面,安装的程序。给用户看的、操作的就是前端。你看不到的,帮你保存网络游戏数据,保存应用数据,处理数据的就是后端(服务端)。 2, 目前一般来说,前端指的就是浏览器端,后端指的就是直接为浏览器端…