前言
看到这个标题,相信您会很诧异,心里在想Synchronized跟猕猴桃八竿子打不着吧!且听我给您娓娓道来。
话说在秦岭山脉以北的山脚下,倚靠着一巍巍长寿塬,这里一年气候“春温暖,夏不燥,秋凉爽,冬不寒”,最适合栽种猕猴桃。
故事
建议:可以看一行故事,再看故事上面的注释信息
// 创建任务 摘猕猴桃
种植了一年的猕猴桃就要收获了
// 共享变量 400棵猕猴桃树
门口椅子上爸爸叹息一声说“额滴神呀!咋种了400棵猕猴桃树”
// 新建两个线程
吃完饭,爸爸妈妈说这得赶紧去地里摘
// 准备就绪
到了猕猴桃园之后,爸爸妈妈戴好手套就开始准备摘了
// Synchronized竞争锁去cpu运行,线程互斥。在运行线程执行完毕,外面排队的线程才可以进入
一不注意他们就吵起来了,然后爸爸妈妈就不想一起去摘,看见对方撒疼(头疼,陕西方言中将头叫撒),
然后爸爸赶紧跑到地里把猕猴桃园的门用这个牌子“Synchronized”的锁给锁起来,这个锁比较重也不好拿,说等我累了出去了你再去地里摘。
猕猴桃园被爸爸锁了起来,诺大的园里只有爸爸一个人在开心的摘着猕猴桃、也吃着猕猴桃,其他人根本进不去园子。(远在他乡的我小声吐槽:摘猕猴桃有啥好开心的)
//锁住的是猕猴桃园这个共享资源
妈妈在园子门外无奈的看着,说我去园子其它地方摘。但是根本进不去,因为爸爸锁住的是他们要一起摘的地方
// 被阻塞在门外面等待线程释放锁
妈妈也不能去别人的园子摘,因为这不属于我们家的,况且也是违法的。妈妈也只能在园子门口等着了
// 线程释放锁进入阻塞,另一线程开始运行,重量级锁线程的切换状态去cpu运行耗时较长
过了一个小时,爸爸摘了10棵树累了,然后打开锁出来休息,妈妈就进去园子摘了。因为这个锁比较重,开锁关锁然后再去园子里和出园子都比较耗时,耽搁了好久。
//确定下爸爸摘得是我家的
妈妈心想估计一个小时我就只能摘8棵树吧,走进园子之后数了下数量,果然少了10棵树。(远在他乡的我又吐槽:这有啥好数的)
//线程停止
就这样摘了五个小时之后他们回家了
他们心想Synchronized这个牌子的锁还真好用,大家一起去摘的猕猴桃园,只要用这个锁住,别人就不能去摘,
只有等自己打开锁出去后别人才能去摘。真好!可以让自己一个人安安静静、快快乐乐的摘猕猴桃。
园子里到底还剩下多少棵树明天才能知道了!
相信您已经知道我要说啥了,对!没错!小弟家里的猕猴桃这两天要成熟了,如果您喜欢吃猕猴桃或者送朋友的话,可以在下面评论“想吃”,小弟后面会私信您。
这是我家的猕猴桃树
资源
本博客持续更新。。。