范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

线程中的死锁问题

  出现此情况是因为每个对象都有线程锁,每个对象都锁了且不释放,这样所有带锁的对象就陷入了僵持状态,为了很好地演示此案例:这里举一个哲学家就餐问题,模拟出现死锁问题,然后我们在解决这个问题,为了解决死锁,需要给线程对象规定锁的时间 ,比如a线程锁3000毫秒就释放,这样其他线程就可以用到之前被锁过的线程了。
  我们来说一说哲学家就餐问题,这是一个很奇怪的问题,先来描述一下:在我们的脑海中先浮现出一个正方形的桌子,然后桌子边儿上坐着4位哲学家,然后桌子的四个角放着四只筷子,这样就有三种情况:
  1.四个人中有人得到了一双筷子
  2.四个人中有人一双筷子也没有
  3.四个人中人手一支筷子(死锁)
  所以我们在执行此案例的代码时会出现这三种情况,在这里我们所要解释的是第三种情况 。在这个例子中,总共出现两个做事情的对象,一个是筷子,一个是哲学家,筷子有编号,有四支筷子,有四个编号,哲学家在拿取筷子时按照编号拿,如图所示:
  按照我们的拿取筷子要求,四位哲学家分别需要这样拿 A:左2右1 ;B:左3右2 ;C:左4右3 ; D:左1右4
  首先创建筷子对象,筷子有编号public class Chopstick {   //筷子对象,没有业务逻辑,只是用来记录筷子编号用的     private int num;   //目的是当哲学家们就餐时,按照编号拿取     public Chopstick(int num){         this.num=num;     }   //使用构造方法,为筷子赋值     public int getNum(){         return this.num;     } }
  有了筷子,那么我们的主角----哲学家也该登场了public class Philosopher extends Thread{ //这是一个哲学家类,他是一个线程,因为是四个哲学家一起,同时吃饭     private String pname;//哲学家的名字     private Chopstick left;//哲学家左手边拿的筷子     private Chopstick right;//哲学家右手边拿的筷子     private long time;//用于解决死锁所需要等待的时间 //通过构造方法告诉哲学家拿取几号筷子     public Philosopher(String pname,Chopstick left,Chopstick right,long time){         this.pname = pname;         this.left = left;         this.right = right;         this.time = time;     } //四位哲学家需要共同执行的规则     public void run(){        /**        *try {        *       Thread.sleep(time);        *   //斯文的哲学家,规定好使用时间,避免了同时使用,发生死锁的情况        *  } catch (InterruptedException e) {        *     e.printStackTrace();        *  }        */         synchronized (left) {//锁住左手边的对象             System.out.println(this.pname+"拿起了左手边的"+this.left.getNum()+"筷子");           //例:A哲学家左手拿起了2号筷子,             synchronized (right){//锁住右手边的对象                 System.out.println(this.pname+"拿起了右手边的"+this.right.getNum()+"筷子");               //A哲学家右手边拿起了1号筷子                 System.out.println(this.pname+"开始狼吞虎咽的吃起来啦");               //OK,执行完毕,释放被锁的2号和1号筷子             }         }     } }
  那么在本案例中,死锁是怎么出现的呢?---->我们规定好所有哲学家先要拿左手边的筷子,再拿右手边的筷子,都拿完后再释放筷子对象,前提是左右手都有了筷子才释放,而死锁就是出现的这么巧,四个哲学家,四只筷子,每个哲学家左手人手一支,右手都没拿筷子,所以就都不释放,拿完左手的筷子后都在等待拿右手的筷子。于是就死锁了。public static void main(String[] args){   //创建主方法     Chopstick c1 = new Chopstick(1);//给四只筷子对象一个编号     Chopstick c2 = new Chopstick(2);     Chopstick c3 = new Chopstick(3);     Chopstick c4 = new Chopstick(4);      //为了解决死锁,给哲学家ABCD设置吃饭时间,这样就不会抢了     Philosopher p1 = new Philosopher("哲学家a",c2,c1,0);     Philosopher p2 = new Philosopher("哲学家b",c3,c2,3000);     Philosopher p3 = new Philosopher("哲学家c",c4,c3,0);     Philosopher p4 = new Philosopher("哲学家d",c1,c4,3000);      p1.start();     p2.start();     p3.start();     p4.start(); }
  来看一下没有死锁的情况
  有死锁的情况
  笔者是一个正在学习后端知识的普通学者,年龄18,性别男。欢迎大家评论,提建议,讨论问题。

华夏幸福新增51亿元债务违约,累计未偿还债务超420亿澎湃新闻记者刘畅产业新城运营商华夏幸福基业股份有限公司(华夏幸福,600340。SH)的违约债务如雪球般越滚越多。4月16日,华夏幸福发布关于公司及下属子公司部分债务未能如期偿还的十四五,河北应以投资驱动,使经济重回前十名河北资本研究会会长李月政治家们都懂一个经济学的简单道理,加快经济发展最灵最快的办法是投资驱动。实现重要发展目标实施重大工程解决重大问题,化解严重困境,都必须依靠投资的力量。美东时间大玩家登场,暴风TV的AI版图再下一城暴风Max6震撼发布2017年11月6日,暴风TV于北京丽都皇冠假日酒店举行了主题为大玩家的新品发布会,正式发布新品牌暴风AI无屏电视,推出首款产品暴风AI无屏电视Max6。目前暴风AI无屏电视Max中高端配置起步新超级战神ZX7ZX8强势来袭游戏的不断更新迭代,对电脑配置的要求也不断提高。因此在游戏本的基础上很多厂商推出了更为高阶的游戏本来应对游戏高画质下对电脑高配置的要求,这种游戏本我们定义为电竞游戏本。神舟电脑作为稳了!双11这波备战,影像巨头齐赴京东签约马上又要到一年一度的双11购(duo)物(shou)节啦,这个让人又爱又恨的双11,爱的是可以买到很多低于平常价格的商品,而钱包却要因此骨感不少,距离京东11。11全球好物节还有5腕上时尚新体验HUAWEIWATCH2保时捷设计版4988元发布10月20日,HUAWEIWATCH2Pro与PORSCHEDESIGNHUAWEISmartwatch两款智能手表新品于上海正式与中国消费者见面。作为华为推出的具有跨时代意义的智全力布局线上市场,vivo与京东合作擦出新火花!3月19日晚,声势浩大的vivoX21新品发布会在浙江乌镇举办,凭借领先的屏幕指纹技术全面屏外观以及JoviAI助理和众多人工智能应用,vivo掀起了2018年手机竞争的新一轮浪潮沪深交易所审核通过首批9单基础设施公募REITs项目首批基础设施公募REITs项目获沪深交易所审核通过,共计9单。其中上交所5单,深交所4单。5月14日,上交所官网显示,首批5单基础设施公募REITs项目获审核通过,这标志着上交所基卢龙县打造百亿元甘薯全产业链河北县域特色产业集群样本67卢龙县甘薯种植历史悠久,甘薯种植历史始于清咸丰年间,因当地土壤通透性好,富含钙磷钾铁锌等矿物质,非常适合甘薯生长。自清朝引种发展至今已有150多年历史。挺进6。3元时代!人民币大幅升值为哪般?记者李金磊人民币升值挺进6。3元时代自今年4月份以来,人民币对美元汇率持续升值。5月26日,在岸人民币离岸人民币对美元汇率震荡上涨,截至发稿时,在岸人民币对美元汇率离岸人民币对美元没油了!!末日来了吗?米色禾苗禾苗的北美生活下午在摇椅上被晃的昏昏欲睡,突然电话铃响了你车有油吗?电话那端传来朋友焦虑的声音。什么意思?我不会是在做梦吧。全城都没汽油了,到远一点的地方去加油。我刚在北边
netty系列之netty中的自动解码器ReplayingDecoder简介netty提供了一个从ByteBuf到用户自定义的message的解码器叫做ByteToMessageDecoder,要使用这个decoder,我们需要继承这个decoder,现在电脑上有哪些视频剪辑软件是比较好用的?有新手期的爱剪辑,快剪辑,品力高等有一定的剪辑基础绘声绘影,视频编辑专家等专业剪辑PremierePro,EDIUS等现在大多数人使用绘声绘影谢邀。在看不少电视剧的时候,观众一般骂什么时候你觉得读书真的很有用?有一次和客户喝酒,酒酣耳热之际,桌子上的其他朋友已经开始讲黄段子了,看着一桌子好酒好菜,看着一帮衣冠楚楚,觉得喝了酒就会讲段子,也太土了,不是咱中华几千年的文化。以前以酒会友,讲究滴滴司机端的热力图是否准确?或者说准确率到底有多高?滴滴热力图是5分钟之前的,有时候您看自己是热区,但是接不到单就是这个原因。但是数据造假到觉得不太可能,毕竟往热区跑,接单概率还是高些!有时候显示区域排队,都接不到单,可能是因为车的没有信仰只看产品,中外大厂之争,TCLX11和索尼X90K该怎么选?目前在用X95J,为了PS5游戏机买的电视,索尼这一块无缝连接。我很少看电视节目,如果单说画质,足够用了,体验不错。要说缺点就是外观实在是丑,音响也不好。说回这个问题,如果不接PS软硬件都拉满!FindX5Pro实拍影像解析,玩的就是真实近两年来,国内的各大手机厂商都在冲击高端手机市场,从目前的市场反馈来看,他们的产品在某些方面的体验是非常棒的。像是OPPO前段时间推出的OPPOFindX5Pro,就在影像系统上取微信新功能微信新功能快看看支付账户有没有陌生在你毫不知情的情况下有了人用你的身份证信息实名认证了支付功能是不是细思极恐看看自己微信的身份信息有没有被别人绑定吧1。微信右下角我支付钱包2。点击北汽蓝谷一季度亏损扩大至9。57亿元旗下极狐陷延迟交付风波北汽蓝谷急需实际销量支撑业绩,但与华为合作的车型却一再推迟交付。4月27日晚间,北汽蓝谷(600733)披露一季报,公司实现营收17。3亿元,同比增长108。42,但净利亏损9。5特斯拉市值一天蒸发超八千亿,马斯克身家近六周缩水超两千亿当地时间周二,俄乌冲突持续美国经济数据持续走软以及科技巨头一季度业绩可能出现下滑等多重因素,显著加剧了市场避险情绪,投资者加速抛售风险资产,美国三大股指遭遇重挫。道指跌超800点,高效杀菌并快速愈合伤口新型纳米酶带来灭菌减毒新思路科技日报讯(记者吴长锋)记者从中国科学院合肥物质科学研究院了解到,该院智能机械研究所黄青研究员课题组制备出一种新型纳米酶可用于高效杀菌并促使伤口快速愈合。研究成果日前在生物学杂志作您对老年人没有智能手机?不能刷场所码怎么看?我觉得科技进步是好事,用智能手机很普通,但任何关于人民生活的大事都不台一刀切。现广老人活着难,处处受卡。坐公交车扫码,进超市扫码,买火车票用手机予订,看病用手机现在生活中时刻离不开