(接上节)
"你们几个都过来,1314这小子提的建议不错,锁升级的机制可以搞一搞,都提点儿建议!"
1314,9527,1573都凑了过来。
"每次都去OS老大那里申请锁确实太费时间,OS住在内核大院,不让外人进,要想进去要个东西,得经过层层审批,你们几个都说说,有没有什么好的办法提高效率的。1314,鬼主意是你提的,你先说!"
1314笑嘻嘻,一副胸有成竹的样子。
"所长,其实我早就想好了!这第一步嘛,就是不加锁,不加锁,效率保证高,嘿嘿!"
没等我说话,9527抢着说:"不加锁?你忘了上次金毛一头翔了?你能保证没有人冲进来?"
1314慢吞吞的说:"我说的就是如果确定只有一个客户的话,就不加锁!"
我一巴掌扇在1314的脑壳上,"废话!你见过厕所一个坑就服务一个客户的吗?当是你自己家啊!"
"所长大人,你别急啊,我还没说完呢。",1314一边躲,一边继续说道:"每天,咱们所总会迎来第一个入坑的客人,这个客人很尊贵,值得特殊照顾,因为,万一今天生意不好,就这么一个客人呢?所以,咱么可以在坑位上写上这个客人的名字,或者...",
1314一边说,一边白了9527一眼:“或者,在坑位上标上9527的编号,这样下次9527再来的时候,发现自己占着坑的话,就不用上锁了,虽然把编号写在坑上花点儿时间,但是CPU那哥们儿速度快,也就几个纳秒而已。”
“哦,有点儿意思,这个有点儿偏向我呢!我喜欢!”9527说道。
“对对,咱们可以给这种方法起个名,就叫偏向锁!不过,可不是偏向你一个人,咱们三个谁是第一个,就偏向谁。”
“那要是来了第二个客人呢?”9527问。
“那当然就是锁升级了!咱们现在开的不就是锁升级大会嘛!”
“你小子有一套,要不然怎么OS老大的马子都被你泡了。”我不由的夸奖道。
“别提了,那姑娘叫Compiler,见谁拍谁的,要不怎么叫可拍乐,我也是不小心被她拍了...”1314一脸的后悔与悲伤。
1573早就不耐烦:“赶紧着,咋升级?”
1314从回忆中回过神来:“第二个第三个第四个人来了,只要人不多,就不能偏向哪一个了,但是这个时候也没必要去找OS老大,咱们可以让新来的人在坑边等着...”
“等着?原来不就是让他们等着嘛,还有一个等待队列呢!”我说
“我说的等着,不是让他们进队列,就在坑边等着,说不定9527的客人拉完了,后面的人就可以马上补上!”
1573把头摇的跟拨浪鼓似的,“不行不行,肯定不行,上次金毛憋得原地打转儿,我才带他进去的,等时间长了真不行的...”
1314眼睛一亮:“原地打转儿?哈哈,正愁没有名字呢,这把锁就叫做原地打转儿锁!”
“原地打转儿锁?这也太粗俗了,文雅一点儿,就叫 自旋锁!”1314鬼点子很多,但就是没什么文化。
“还是所长有文化,这名字一听就多了文艺气息!”1314一脸谄媚
“还不是得原地打转儿,小心拉裤子里...”1573嘟嘟囔囔。
“坑里的人出来的话,打转儿的人谁进去?有没有先来后到?”我问
“这个嘛,就看咱们是公平锁还是非公平锁了,嘿嘿,所长,您决定!咱们要是公平呢,就给他们排个队,不然的话,由着他们自己抢去。”
我沉吟了一下,“好吧,暂时就这么办!那下一步怎么升级?”我问1314
“要是来的人更多,或者,打转儿的次数够多(JDK1.6规定为10次),或者打转儿的人够多(JDK目前规定为自旋线程超过CPU内核数的一半),我们自己就应付不了了,只能去找OS老大,去申请OS老大的那把超级无敌大重锁!”
“好!”我一拍大腿,“就这么办!人少的时候咱们自己应付 ,人多了,再去麻烦老大!我马上写份报告给上级,1314,你马上贴份告示到墙上,告诉客人咱们的新规则!”
“这个规定顺利实行的话,明年咱们所的接待能力会大大提升呢,说不定可以接待毛易代表团了。”我心中窃喜。
“毛易?还是毛不易?”1573一脸的疑惑。
两天后,一份告示贴到了厕所的墙上:
本所关于锁管理的新龟腚
各位便者大家好,为了更好的服务大家的腚,本所将采取锁升级机制
1:坑位偏向锁一把,先到先得,本所小线程负责贴标签
2:人少请自旋
3:人再多的话,我们小线程们负责找重量级老大申请重量级锁
4:不负责擦屁股
钦此!
网友评论