二级域名解析网站专业做网站设计公司价格

news/2025/10/4 14:57:17/文章来源:
二级域名解析网站,专业做网站设计公司价格,辽宁大连直客部七部电话,网站播放大视频如何做在Java并发场景中#xff0c;会涉及到各种各样的锁#xff0c;比如#xff1a;高并发编程系列#xff1a;4种常用Java线程锁的特点#xff0c;性能比较、使用场景#xff0c;这些锁有对应的种类#xff1a;公平锁#xff0c;乐观锁#xff0c;悲观锁等等#xff0c;这… 在Java并发场景中会涉及到各种各样的锁比如高并发编程系列4种常用Java线程锁的特点性能比较、使用场景这些锁有对应的种类公平锁乐观锁悲观锁等等这篇文章来详细介绍各种锁的分类 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念体现了看待线程同步的不同角度在Java和数据库中都有此概念对应的实际应用。 1.乐观锁 顾名思义就是很乐观每次去拿数据的时候都认为别人不会修改所以不会上锁但是在更新的时候会判断一下在此期间别人有没有去更新这个数据可以使用版本号等机制。 乐观锁适用于多读的应用类型乐观锁在Java中是通过使用无锁编程来实现最常采用的是CAS算法Java原子类中的递增操作就通过CAS自旋实现的。 CAS全称 Compare And Swap比较与交换是一种无锁算法。在不使用锁没有线程被阻塞的情况下实现多线程之间的变量同步。java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。 简单来说CAS算法有3个三个操作数 需要读写的内存值 V。 进行比较的值 A。 要写入的新值 B。 当且仅当预期值A和内存值V相同时将内存值V修改为B否则返回V。这是一种乐观锁的思路它相信在它修改之前没有其它线程去修改它而Synchronized是一种悲观锁它认为在它修改之前一定会有其它线程去修改它悲观锁效率很低。 2.悲观锁 总是假设最坏的情况每次去拿数据的时候都认为别人会修改所以每次在拿数据的时候都会上锁这样别人想拿这个数据就会阻塞直到它拿到锁。 传统的MySQL关系型数据库里边就用到了很多这种锁机制比如行锁表锁等读锁写锁等都是在做操作之前先上锁。详情可以参考阿里P8架构师谈MySQL行锁、表锁、悲观锁、乐观锁的特点与应用 再比如上面提到的Java的同步synchronized关键字的实现就是典型的悲观锁。 3.总之 悲观锁适合写操作多的场景先加锁可以保证写操作时数据正确。 乐观锁适合读操作多的场景不加锁的特点能够使其读操作的性能大幅提升。 公平锁 VS 非公平锁 1.公平锁 就是很公平在并发环境中每个线程在获取锁时会先查看此锁维护的等待队列如果为空或者当前线程是等待队列的第一个就占有锁否则就会加入到等待队列中以后会按照FIFO的规则从队列中取到自己。 公平锁的优点是等待锁的线程不会饿死。缺点是整体吞吐效率相对非公平锁要低等待队列中除第一个线程以外的所有线程都会阻塞CPU唤醒阻塞线程的开销比非公平锁大。 2.非公平锁 上来就直接尝试占有锁如果尝试失败就再采用类似公平锁那种方式。 非公平锁的优点是可以减少唤起线程的开销整体的吞吐效率高因为线程有几率不阻塞直接获得锁CPU不必唤醒所有线程。缺点是处于等待队列中的线程可能会饿死或者等很久才会获得锁。 3.典型应用: java jdk并发包中的ReentrantLock可以指定构造函数的boolean类型来创建公平锁和非公平锁默认,比如公平锁可以使用new ReentrantLocktrue实现。 独享锁 VS 共享锁 1.独享锁 是指该锁一次只能被一个线程所持有。 2.共享锁 是指该锁可被多个线程所持有。 3.比较 对于Java ReentrantLock而言其是独享锁。但是对于Lock的另一个实现类ReadWriteLock其读锁是共享锁其写锁是独享锁。 读锁的共享锁可保证并发读是非常高效的读写写读 写写的过程是互斥的。 独享锁与共享锁也是通过AQS来实现的通过实现不同的方法来实现独享或者共享。 4.AQS 抽象队列同步器AbstractQueuedSynchronizer简称AQS是用来构建锁或者其他同步组件的基础框架它使用一个整型的volatile变量命名为state来维护同步状态通过内置的FIFO队列来完成资源获取线程的排队工作。 concurrent包的实现结构如上图所示AQS、非阻塞数据结构和原子变量类等基础类都是基于volatile变量的读/写和CAS实现而像Lock、同步器、阻塞队列、Executor和并发容器等高层类又是基于基础类实现。 分段锁 分段锁其实是一种锁的设计并不是具体的一种锁对于ConcurrentHashMap而言其并发的实现就是通过分段锁的形式来实现高效的并发操作。 我们以ConcurrentHashMap来说一下分段锁的含义以及设计思想ConcurrentHashMap中的分段锁称为Segment它即类似于HashMapJDK7与JDK8中HashMap的实现的结构即内部拥有一个Entry数组数组中的每个元素又是一个链表同时又是一个ReentrantLockSegment继承了ReentrantLock。 当需要put元素的时候并不是对整个hashmap进行加锁而是先通过hashcode来知道他要放在那一个分段中然后对这个分段进行加锁所以当多线程put的时候只要不是放在一个分段中就实现了真正的并行的插入。 但是在统计size的时候可就是获取hashmap全局信息的时候就需要获取所有的分段锁才能统计。 分段锁的设计目的是细化锁的粒度当操作不需要更新整个数组的时候就仅仅针对数组中的一项进行加锁操作。 你可能也喜欢: Java多线程与并发系列从0到1全部合集强烈建议收藏Java多线程系列(十一)ReentrantReadWriteLock的实现原理与锁获取详解Java多线程系列(四)4种常用Java线程锁的特点性能比较、使用场景Java多线程系列(五)线程池的实现原理、优点与风险、以及四种线程池实现Java多线程系列(七)并发容器的原理7大并发容器详解、及使用场景Java多线程系列(八)ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

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

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

相关文章

十月四日就听《10월 4일》

왠지 요즘에 난 그 소녀가 떠올라 不知为何最近 那女孩总浮现在脑海 내가 숨을 멈출 때 每当我屏住呼吸 就会想起你 너를 떠올리곤 해 在我眼前浮现的 내 눈가엔 아련한 시절의 只有那段朦胧岁月里 너무나 짧았던 太过…

手机浏览器网页加速器360网站推广官网怎么优化

1、BCC异或校验 从输入的HEX第一个字节开始,按字节依次循环计算异或值直到HEX结尾字节,得到的最终一个字节值。 2、C程序 /******************************************************************************* _____ ___ ____ ___ _____ _ …

windows上的实用小软件

来源:https://www.zhihu.com/question/22052999/answer/19519439768788588421、PowerToys(微软官方的工具) 这个绝对是被低估的软件,大部分人根本不知道他的强大,这是微软亲儿子工具集。 很多人一听是微软出的工具…

微博登录网站开发哈尔滨网页制作教程

无限流量手机服务器 内容精选换一换云手机作为一种新型服务,依靠华为云的服务器底座、创新技术及周边服务的天然优势,让移动应用不但可以在物理手机运行,还可以在云端智能运行。相比常见的手机模拟方案,云手机在性能、兼容性、稳定…

algorithm B manipulations 1/99

step by step for the Huffman algorithm in C++, writing down every action on each data structure and labeling it as Insert / Update / Remove / Combine / Traverse. This will show exactly how manipulation…

深入解析:Java JVM --- JVM内存区域划分,类加载,GC垃圾回收

深入解析:Java JVM --- JVM内存区域划分,类加载,GC垃圾回收pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

天津宇昊建设集团有限公司网站济南专业网站建设咨询

二叉搜索树中第K小的元素 二叉搜索树具有如下性质: 结点的左子树只包含小于当前结点的数。 结点的右子树只包含大于当前结点的数。 所有左子树和右子树自身必须也是二叉搜索树。 二叉树的中序遍历即按照访问左子树——根结点——右子树的方式遍历二叉树&#x…

比赛题2

DMY DAY5 T1 糖丸了,建个分层图第二层连边权为 \(0\) 的边,跑 01bfs 即可,时间复杂度 \(\mathcal{O}(n + m + V \log V)\)。点击查看代码 #include <bits/stdc++.h> using namespace std; const int N = 2e5 …

【微科普】蒙特卡洛(全网最好懂,附MATLAB算法):用 “撒芝麻” 的智慧破解复杂挑战 —— 从披萨面积到金融风险的诗意算法

【微科普】蒙特卡洛(全网最好懂,附MATLAB算法):用 “撒芝麻” 的智慧破解复杂挑战 —— 从披萨面积到金融风险的诗意算法2025-10-04 14:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !import…

ZR 2025 十一集训 Day 4

dp、贪心杂题。CF1606E 思维难度:\(\color{#52C41A} 绿\) *1700 如何设计状态? 首先第一维一定是剩余 \(i\) 个人,这个是毫无疑问的。 然后看我们实际上关心的是什么。因为要算没有人胜利的方案数,而如果有人胜利,…

价值处理单元(VPU)专题研究:从价值危机到透明决策的计算革命——声明Ai研究

价值处理单元(VPU)专题研究:从价值危机到透明决策的计算革命 一、研究背景与意义 1.1 从算力危机到价值危机的范式转变 在人工智能发展的当前阶段,我们正面临着一个根本性的悖论:模型的预测精度与人类信任度呈现出…

13-Neo4j Desktop

Neo4j Desktop 概述 Neo4j Desktop是Neo4j官方提供的图形化桌面应用程序,专门为开发者和数据科学家设计,用于简化图数据库的开发、管理和可视化工作流程。4 是什么 Neo4j Desktop是一个集成的开发环境,提供了以下核…

深圳哪个做网站好优化网站维护一般需要多久时间

08-09上海大学计算机考研试卷第 页 共 页 第 页 共 页第 页 共 页 第 页 共 页上海大学2008&#xff5e;2009学年 秋季学期研究生答题卷课程名称&#xff1a;计算机视觉基础 课程编号&#xff1a; 0座机电话号码 学 分&#xff1a; 4 考试日期&#xff1a; 2008年11月23日应试人…

中兴ZXHN F450光猫关闭TR069实录

前情提要 上了高中后家里搬家,打电话叫电信迁移宽带,结果迁移完发现师傅把原本的华为光猫换成了中兴的。问了一下师傅光猫后台密码,没想到师傅直接给了超级密码(( 由于电信的光猫可能会被远程重置超密,为了保住超…

赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解

赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”

完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

随机化学习笔记

以后不会正解就用这东西。 随机函数 说一个单独的数是「随机数」是无意义的,所以以下我们都默认讨论「随机数列」,即使提到「随机数」,指的也是「随机数列中的一个元素」。 现有的计算机的运算过程都是确定性的,因…

在国税网站更换购票员怎么做四川新正路桥建设工程有限公司网站

文章目录 基本思想递归版本思路代码实现 非递归版思路代码实现 特性结果演示 基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子…

PWN手的从成长之路-08-not_the_same_3dsctf_2016-溢出+函数调用劫持

远程连接,没有什么可用信息。file 查看文件。32 位 ELF 可执行文件。checksec 查看文件安全属性。开启了 NX 保护,栈上无法执行。IDA 打开文件。查看 main 函数,发现了 gets() 高危函数。并且在 get_secret 函数中找…