当前位置: 首页 > news >正文

广州市城乡和建设局网站平台推广方式有哪些

广州市城乡和建设局网站,平台推广方式有哪些,学java哪个培训学校最好,做好政府网站建设工作【案例8-5】 小朋友就餐问题 【案例介绍】 1.任务描述 一圆桌前坐着5位小朋友,两个人中间有一只筷子,桌子中央有面条。小朋友边吃边玩,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。但是,小朋友在吃…

【案例8-5】  小朋友就餐问题

【案例介绍】

  1.任务描述

一圆桌前坐着5位小朋友,两个人中间有一只筷子,桌子中央有面条。小朋友边吃边玩,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。但是,小朋友在吃饭过程中,可能会发生5个小朋友都拿起自己右手边的筷子,这样每个小朋友都因缺少左手边的筷子而没有办法吃饭。本案例要求编写一个程序解决小朋友就餐问题,使每个小朋友都能成功就餐。

2.运行结果

运行结果如图8-1所示。

图8-1 运行结果

 

【案例思路】

  1. 查看运行结果分析后,每个小朋友相当于一个线程,所以先创建一个Philosopher()方法作为小朋友。
  2. 查看运行结果分析后,创建eating()方法作为小朋友吃饭时的线程,创建thinking()方法作为小朋友玩耍时的线程。
  3. 查看运行结果分析后,需要在获取筷子的方法Fork中先定义一个boolean类型的数组,代表5根筷子的使用情况;再使用synchronized线程锁来控制只有左右手的筷子都未被使用时,才允许获取筷子,且必须同时获取左右手筷子。
  4. 查看运行结果分析后,需要在释放左右手筷子的方法putFork中使用synchronized线程锁来释放筷子。
  5. 最后在Test测试类中调用5次以上方法,代表5位小朋友。

【案例代码】

小朋友就餐问题的程序代码实现如文件8-1所示。

文件8-1  Philosopher.java

  1. package chapter0805;
  2. /*每个小朋友相当于一个线程*/
  3. public class Philosopher extends Thread{
  4.     private String name;
  5.     private Fork fork;
  6.     public Philosopher(String name,Fork fork){
  7.         super(name);
  8.         this.name=name;
  9.         this.fork=fork;
  10.     }
  11.     public void run(){
  12.         while(true){
  13.             thinking();
  14.             fork.takeFork();
  15.             eating();
  16.             fork.putFork();
  17.         }
  18.     }
  19.     public void eating(){
  20.         System.out.println("小朋友"+name+"在吃饭");
  21.         try {
  22.             sleep(1000);//模拟吃饭,占用一段时间资源
  23.         } catch (InterruptedException e) {
  24.             // TODO Auto-generated catch block
  25.             e.printStackTrace();
  26.         }
  27.     }
  28.     public void thinking(){
  29.         System.out.println("小朋友"+name+"在玩游戏");
  30.         try {
  31.             sleep(1000);//模拟思考
  32.         } catch (InterruptedException e) {
  33.             // TODO Auto-generated catch block
  34.             e.printStackTrace();
  35.         }
  36.     }
  37. }
  38. class Fork{
  39.     /*5只筷子,初始为都未被用*/
  40.     private boolean[] used={false,false,false,false,false};
  41.     /*只有当左右手的筷子都未被使用时,才允许获取筷子,且必须同时获取左右手筷子*/
  42.     public synchronized void takeFork(){
  43.         String name = Thread.currentThread().getName();
  44.         int i = Integer.parseInt(name);
  45.         while(used[i]||used[(i+1)%5]){
  46.             try {
  47.                 wait();//如果左右手有一只正被使用,等待
  48.             } catch (InterruptedException e) {
  49.                 // TODO Auto-generated catch block
  50.                 e.printStackTrace();
  51.             }
  52.         }
  53.         used[i ]= true;
  54.         used[(i+1)%5]=true;
  55.     }
  56.     /*必须同时释放左右手的筷子*/
  57.     public synchronized void putFork(){
  58.         String name = Thread.currentThread().getName();
  59.         int i = Integer.parseInt(name);
  60.         used[i]= false;
  61.         used[(i+1)%5]=false;
  62.         notifyAll();//唤醒其他线程
  63.     }
  64. }

文件8-1中第3~18行代码封装一个小朋友的方法,第19~27行代码是封装了小朋友吃饭时的方法,第28~37行代码封装了小朋友玩耍时的方法,第38~64行代码封装了筷子使用情况的方法。

测试类的代码如文件8-2所示,调用5次Fork代表5个小朋友。

文件8-2 Test.java

  1. package chapter0805;
  2. public class Test {
  3.       public static void main(String []args){
  4.             Fork fork = new Fork();
  5.             new Philosopher("0",fork).start();
  6.             new Philosopher("1",fork).start();
  7.             new Philosopher("2",fork).start();
  8.             new Philosopher("3",fork).start();
  9.             new Philosopher("4",fork).start();
  10.         }
  11. }

  

 

http://www.ds6.com.cn/news/69083.html

相关文章:

  • 家谱网站怎么做河北疫情最新情况
  • 昆明品牌网站建设seo公司推荐推广平台
  • wordpress+v4.1seo网站优化价格
  • 专做婴儿的网站百度seo和sem的区别
  • seo网站排名后退开发一个小程序一般需要多少钱呢
  • 电子商务网站策划书布局设计海南百度推广电话
  • 一级a做爰片2017免费网站农产品营销方案
  • 长沙好的网站建设公司排名优化流程
  • 出版社网站建设域名估价
  • 深圳app开发公司价格怎么算seo技术教程
  • 福田网站网页设计英语培训
  • 宝安网站设计学seo哪个培训好
  • 个人资料库网站怎么做东莞网络营销
  • 谁知道做网站的电话自助建站网站模板
  • 江苏专业网站建设百度seo优化怎么做
  • 天津做企业网站app下载注册量推广平台
  • 建设网站的过程百度爱采购怎么推广
  • 工作期间员工花钱做的网站网络优化seo是什么工作
  • 做网站有2个前提条件_一个是网站网站搜索引擎优化方法
  • php做的直播网站哪里搜索引擎优化好
  • web网站开发需要什么软件企业网站多少钱一年
  • 如何给网站增加关键词短期培训学什么好
  • 南通网站建设方案外包今日时政新闻热点
  • 成都企业网站备案流程百度推广客户端官方下载
  • 个体营业执照可以做网站服务吗公司网站设计公司
  • 找人做网站属于合同纠纷吗宁波关键词优化企业网站建设
  • 做网站需要招什么中国做网站的公司排名
  • 网上书城网站系统建设适合35岁女人的培训班
  • 网站开发技术网站开发网站用什么软件
  • 网站建设公司的税是多少钱百度快速优化软件排名