分享好友 最新动态首页 最新动态分类 切换频道
每日十题八股-2024年12月10日
2024-12-27 10:56

1.syncronized锁升级的过程讲一下
2.JVM对Synchornized的优化
3.介绍一下AQS
4.Threadlocal作用,原理,具体里面存的key value是啥,会有什么问题,如何解决?
5.悲观锁和乐观锁的区别
6.Java中想实现一个乐观锁,都有哪些方式
7.CAS 有什么缺点
8.为什么不能所有的锁都用CAS
9.voliatle关键字有什么作用
10.指令重排序的原理是什么

每日十题八股-2024年12月10日

只能升级不能降级。
可以看到在 Java 虚拟机中,对象分为三块区域,其中的对象头又包含 Mark Word(标记字段 和 Class Pointer(类型指针) 两部分(其中的数组长度是针对数组来说的)。

无锁,偏向锁,轻量级锁,重量级锁。
随着对锁的请求线程数的竞争激烈程度不断升级。
无锁:当无线程申请获取锁时,处于无锁状态。
偏向锁针对资源总被一个线程使用的情况:当有线程申请获取锁,锁类型被标记为偏向锁,并将当前线程ID记录在Mark Word。之后线程再次进入是,利用CAS比较记录id与线程id,如果相同直接进入资源,否则申请锁,修改Mark Word。
轻量级锁:轻量级锁是为了在线程近乎交替执行同步代码时提高性能。当线程 A 与 线程 B 同时抢占锁对象时,偏向锁会被撤销并将锁升级为轻量级锁。轻量级锁当一个线程A抢占了资源,B会不断循环重试,直至获取到锁。(有点复杂,将对象中的Mark word利用CAS写入线程的Lock Record里面,再将对象中的Mark word 指向Lock Record,这样才算获取到锁。
重量级锁:多个线程竞争时,升级为重量级锁,不再使用自旋,而是直接阻塞线程(线程会被操作系统调度然后挂起,这可以节约CPU资源。)。

锁膨胀(锁升级锁消除(JJVM 虚拟机如果检测不到某段代码被共享和竞争的可能性就会将这段代码所属的同步锁消除掉,从而到底提高程序性能的目的。锁粗化(将多个连续的加锁、解锁操作连接在一起,扩展成一个范围更大的锁。自适应自旋锁(自适应自旋锁通过监控锁的使用情况,动态地调整自旋的次数或者自旋的策略,以更好地适应当前程序的运行状况。)。

作用:ThreadLocal对象可以提供线程局部变量,每个线程Thread拥有一份自己的**副本变量,多个线程互不干扰。**在同一个线程里的一系列操作可以减少参数传递降低耦合度。
原理:每个线程都有自己的 ThreadLocalMap,这个映射表存储了线程的局部变量,其中键是 ThreadLocal 对象的弱引用,值为我们保存的值。

问题:内存泄漏。线程结束,ThreadLocalMap也随之销毁,但是ThreadLocal对象本身并没有立即被垃圾回收,直到没有其他引用指向它为止。因此,实际应用中需要在使用完ThreadLocal变量后调用remove()方法释放资源。

悲观锁就是认为线程之间的竞争总是在发生,因此,当线程尝试对某种资源进行操作时会直接上锁,直至操作完成才释放锁。
乐观锁则认为线程之间的竞争是极少发生的,因此,当线程尝试对于某种资源进行操作时并不上锁,而是将比较-替换这两个动作作为一个原子操作尝试去修改内存,如果失败则说明有其他线程已经修改过了,则遵循相应的机制进行重试。

CAS:利用比较-替换的原子操作,实现线程安全。
版本号控制:每当一个线程要修改数据时,都会先读取当前的版本号或时间戳,并将其保存下来。线程完成修改后,会再次读取当前的版本号或时间戳,如果发现已经变化,则说明有其他线程对数据进行了修改,此时需要回滚并重试。

ABA问题:加入版本号之类的。如Java中有AtomicStampedReference来解决这个问题。
自旋CAS的方式,长时间不成功会不断循环重试,会浪费大量的CPU资源。
只能保证一个共享变量的原子操作:多个可以通过AtomicReference来处理或者使用锁synchronized实现。

CAS是基于循环重试机制的。如果CAS操作未能成功,线程会一直自旋重试,占用CPU资源。当高并发的时候,会对CPU资源造成极大地浪费。

1.保证变量对所有线程的可见性。
2.通过内存屏障禁止指令重排。

最新文章
如何利用搜索引擎来判断关键词SEO
现在SEO优化界所有人员的赚钱方面主要两种,要么就是自己接单,要么就是去公司打工,当然了发展的好和坏最根本的还是依靠自己的能力和付出,不过有的时候,当我们接单或者新去一个领域工作的时候,往往对这个行业的了解还是很低的,最直接
遭遇KYC审核被拒死怎么办?
在当今全球化的商业环境中,各国政府为了打击腐败和洗钱行为,纷纷出台了严格的监管政策。其中,欧盟的KYC(Know Your Customer)政策便是备受关注的一项。KYC全称(Know Your Customer)用咱们的话来理解就是欧盟的一个对于公司以及法人的
《明日方舟:终末地》再次测试招募开启 公布全新PV
今天(2024 年 12 月 14 日),塔防手游《明日方舟》开发商鹰角网络发布了此前宣布的即时策略游戏《明日方舟:终末地》的“再次测试”PV,并宣布测试招募现已开启。游戏的“再次测试”B测将于 2025 年 1 月中旬开启,为限量删档测试,将不
直通车推广技巧:选词、出价、优化,提高ROI
作为一名资深的电商运营人员,我深知直通车推广在提升店铺流量和销量方面的重要性。很多新手卖家在操作直通车时往往会陷入一些误区,导致ROI偏低,甚至亏损。为了帮助大家更好地理解直通车推广的精髓,我将从选词、出价、优化三个方面来分
行业视角 | 哈尔滨骏展雷克萨斯总经理董占全:探秘黑龙江最大雷克萨斯店,人效与服务的博弈!
我们集团在整个黑龙江省有9家店,其中有7家是在哈尔滨,有两家是在整个黑龙江省外的,整个集团一共是9家店。那我们骏展雷克萨斯可以这么讲,是整个黑龙江省建筑面积是最大的一个雷克萨斯的经销商店。那整个建地面积是15,000平,建筑面积的
抖音开通膳食营养类目准备什么资料?开通具体步骤分享 今年快速渠道
在数字经济飞速发展的今天,短视频平台已经成为了各类品牌宣传、产品推广的重要渠道。抖音作为国内Zui受欢迎的短视频平台之一,凭借其强大的用户基数和丰富的内容生态,吸引了无数企业和个人入驻。如果你打算在抖音上开通膳食营养类目账号
用尖端科技赋能低空城市起降场数智运行
转自:天津日报  “忽如一夜春风来,千树万树梨花开”。低空经济作为战略性新兴产业融合发展的新赛道,已成为推动社会经济创新发展的新引擎。城市起降场作为低空经济的主要基础设施之一,其数智运行程度直接影响了低空经济的整体运行水平
详解人工智能领域重大突破:GPT-3
英语原文:Exploring GPT-3: A New Breakthrough in Language Generation翻译:雷锋字幕组GPT-3是什么?我们讨论15亿参数的 Generative Pretrained Transformer-2(GPT-2)的延迟发布是否合理,似乎还是去年的事情。如果你觉得其实没过多久
,掌握这些技巧,让百度轻松收录你的网站内容
在当今数字化时代,拥有一个网站对于个人和企业来说至关重要,仅仅拥有一个网站是不够的,更重要的是让百度等搜索引擎收录你的网站内容,以便更多的人能够找到你的网站,怎样才能让百度收录网站内容显示呢?下面将为大家介绍一些实用的技巧
谷歌chrome浏览器2023安卓最新
谷歌chrome浏览器是一款快速、安全且功能丰富的网络浏览器,干净整洁的界面以及快速地浏览速度带给用户舒适的使用体验,多功能的特点使用户可以畅快的浏览互联网、享受便捷的上网体验。网页翻译 - 您可以轻松浏览任何语言的网页节省数据流
相关文章
推荐文章
发表评论
0评