计算机组成原理
文章平均质量分 90
A 北枝
双非二本25届,培训Java中,9月份校招找工作
展开
-
【计算机组成原理】7.线程之大厂难题
通过源码我们看到,为何总是唤醒线程A,这是用于当线程C竞争不到锁时,被放入了cxq队列,而此时entrylist为null,线程A在等待集waitset中,当我们调用notify方法时,由于移动策略默认是2,这时会从等待集的头部将线程A取下,放入到entrylist中,当notify执行完毕后,在执行后面的monitor_exit字节码时将会优先从entrylist中唤醒线程,这就导致了A线程总是被优先执行。原创 2024-03-03 10:14:24 · 1064 阅读 · 0 评论 -
【计算机组成原理】6.并发编程的特性
注意序列化并非其他程序一直没机会执行,而是有可能会被调度,但是抢不到锁,又回到Blocked或者Waiting状态(sync锁升级)重量级锁(经过操作系统的调度)synchronized早期都是这种锁(目前的实现中升级到最后也是这种锁)悲观锁:悲观的认为这个操作会被别的线程打断(悲观锁)synchronized(上一个小程序)如果临界区执行时间长,语句多,叫做 锁的粒度比较粗,反之,就是锁的粒度比较细。轻量级锁(CAS的实现,不经过OS调度)(无锁 - 自旋锁 - 乐观锁)一定是锁定同一把锁(抢一个坑位)原创 2024-03-01 10:18:38 · 997 阅读 · 0 评论 -
【计算机组成原理】5.线程
sleep()方法在睡眠的时候,不到时间是没有办法叫醒的,这个时候可以用interrupt设置标志位,然后呢必须得catch InterruptedException来进行处理,决定继续睡或者是别的逻辑,(自动进行中断标志复位)interrupt()不能打断正在竞争锁的线程synchronized()本节内容的重要程度:中(面试有可能被问)重要程度:中(面试不多)原创 2024-02-29 10:03:47 · 1014 阅读 · 0 评论 -
【计算机组成原理】4.CPU的并发控制
•线程中断规则:对线程interrupt( )方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过Thread.interrupt( )方法检测线程是否中断。•程序次序规则:同一个线程内,按照代码出现的顺序,前面的代码先行于后面的代码,准确的说是控制流顺序,因为要考虑到分支和循环结构。为了充分利用CPU的计算能力,在CPU和内存中间引入缓存的概念(工业上的妥协,考虑性价比)•对象终结规则:一个对象的初始化完成先行于发生它的finalize()方法的开始。如果缓存行大:命中率高,但读取效率低。原创 2024-02-28 09:08:07 · 1041 阅读 · 0 评论 -
【计算机组成原理】2.CPU的原理
这一点很重要,因为这会给你带来“通透感”(原谅我找不到更好的形容词,现在很多程序员是没有经过科班训练的,是根据业务进行速成的,对这样的小伙伴儿来说,你写的代码虽然可以工作,但是它对你是一个黑盒子,你看不到代码背后的一切,从而也就无法进行更深入的理解和更准确的调优,总之,我个人非常喜欢这种通透感,我不喜欢一个技术对我来说是黑盒,是秘密,希望你也能理解和享受这种通透感)当然你会发现如果只有两个信号的组合,就最多表示四个字,如果想沟通更顺畅,我只要增加信号的组合长度就可以了,比如三个信号,我就可以表示八个字。原创 2024-02-26 14:37:34 · 972 阅读 · 0 评论 -
【计算机组成原理】1.计算机的历史
对我有没有什么企图?如果非要追究计算机的鼻祖,那就得讲讲17世纪前欧洲的故事,最早的计算机其实是计算器,就是算数用的,在欧洲工业工业革命的时候,大量的工业模具需要计算,欧洲又没有中国传统的计算器 - 算盘,就催生了很多科学家发明自己的计算器(对,就是计算器,就是以前菜市场还在使用的那种,还不能称之为现在的计算机),这其中有个NB的人物,这个人叫布莱士帕斯卡,我们的压强单位(帕,千帕,百帕,兆帕)等等,就是以这哥们儿的名字命名,还有,计算机语言里面有一种叫做Pascal,就是为了纪念他。原创 2024-02-25 08:18:27 · 967 阅读 · 0 评论