多线程
文章平均质量分 79
sangsong7th
这个作者很懒,什么都没留下…
展开
-
synchronized 对象头的作用和锁升级
首先进行结论总结偏向锁: 偏向锁认为,获取锁的总是同一个线程轻量级锁:轻量级锁认为,大多数情况下不会出现锁竞争,即使出现了锁竞争,获取锁的线程也能很快释放锁。获取不到锁的线程可以通过自旋等待一段时间,不会陷入阻塞状态。偏向锁的流程在锁对象的对象头中有一个ThreadId字段,如果字段是空,第一次获取锁的时候就把自身的ThreadId写入到锁的ThreadId字段内,把锁内的是否是偏向锁状态位置设置为1。下次获取锁的时候,直接查看ThreadId是否和自身线程Id一致,如果一致就认为当前线程已经取得了原创 2020-10-24 23:13:02 · 300 阅读 · 0 评论 -
S锁的原理实现
S锁的原理实现转载 2020-10-23 03:41:19 · 321 阅读 · 0 评论 -
mysql的锁:innoDB引擎
InnoDB实现了以下两种类型的行锁。共享锁(s):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。排他锁(X):允许获取排他锁的事务更新数据,阻止其他事务取得相同的数据集共享读锁和排他写锁。另外,为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB还有两种内部使用的意向锁(Intention Locks),这两种意向锁都是表锁。意向共享锁(IS):事务打算给数据行共享锁,事务在给一个数据行加共享锁前必须先取得该表的IS锁。意向排他锁(IX):事务打算给数据行加排他锁,事务在给一个数据原创 2020-10-06 12:02:39 · 76 阅读 · 0 评论 -
Java 工作内存与主内存交互
物理机高速缓存和主内存之间的交互有协议,同样的,java内存中线程的工作内存和主内存的交互是由java虚拟机定义了如下的8种操作来完成的,每种操作必须是原子性的(double和long类型在某些平台有例外,参考volatile详解和非原子性协定)java虚拟机中主内存和工作内存交互,就是一个变量如何从主内存传输到工作内存中,如何把修改后的变量从工作内存同步回主内存。lock(锁定):作用于主内存的变量,一个变量在同一时间只能一个线程锁定,该操作表示这条线成独占这个变量unlock(解锁):作用于主内存原创 2020-10-03 23:57:17 · 376 阅读 · 0 评论 -
并发问题
全体成员 今晚10点半讲课,关于编码线程安全相关的点,针对P5,P6等级工程师,以及有意架构师的同学们【JAVA】党光辉下的番茄(1159505450) 2019-11-07 11:51:24对的【JAVA】党光辉下的番茄(1159505450) 2019-11-07 12:24:56群里【JAVA】党光辉下的番茄(1159505450) 2019-11-07 22:29:33@全体成...原创 2020-09-14 18:24:14 · 550 阅读 · 0 评论 -
volatile 实现原理和优化
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-12-16 10:04:05 · 178 阅读 · 0 评论 -
Cache一致性:MESI
一、硬件办法大多数的处理器都有自己的cache,同一主存块的拷贝能同时存于不同cache中,若允许处理器各自独立的修改自己的cache,就会出现不一致问题。解决此问题由软件办法和硬件办法。硬件办法能动态的识别出不一致产生的条件并予以及时处理,从而让cache的使用有很高的效率。并且此办法对程序员和系统软件开发人员是透明的,减轻了软件研制负担。从而普遍被采用。 ◆ 目录协议(Directory Protocol)::它由位于主存的目录来保存有关各个局部cache的全局性状态信息,并由一个集中式的主原创 2020-09-03 00:05:13 · 722 阅读 · 0 评论 -
什么情况下会发生栈内存溢出。
1.什么是栈栈是先进后出的数据模型,这里指的是运行时栈,主要是进行指令存储和辅助运行。2.什么时候会有栈溢出主要时候在进行递归的时候,在进行递归时,未完成不会释放资源,并且递归的次数不容易通过代码控制,如果超出边界就会导致栈溢出3.相关配置参数-Xss...原创 2020-07-01 08:44:29 · 4673 阅读 · 0 评论 -
进程与线程 生命周期与相关知识的引入
进程与线程 并且与java相关 生命周期与相关知识的引入进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工原创 2020-05-20 17:10:24 · 162 阅读 · 0 评论