<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題目:生產消費問題

      題目:

      方法1:(有問題)

      package com.gao.Project.Pro9;
      
      public class Product {//商品類
          //品牌
          private String brand;
          //名字
          private String name;
      
          public String getBrand() {
              return brand;
          }
      
          public void setBrand(String brand) {
              this.brand = brand;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      }
      
      
      package com.gao.Project.Pro9;
      
      public class PuoducerThread extends Thread{ //生產者線程
          //共享商品
          private Product p ;
          //構造器
          public PuoducerThread(Product p) {
              this.p = p;
          }
      
          @Override
          public void run() {
              for (int i = 1; i <= 10 ; i++) {//生產10個商品   i--->生產次數
                  synchronized (p){
                      if(i%2 == 0){
                          //生成費列羅巧克力
                          p.setBrand("費列羅");
                          p.setName("巧克力");
                          try {
                              Thread.sleep(100);
                          } catch (InterruptedException e) {
                              throw new RuntimeException(e);
                          }
                      }else {
                          //生產哈爾濱啤酒
                          p.setBrand("哈爾濱");
                          p.setName("啤酒");
                          try {
                              Thread.sleep(100);
                          } catch (InterruptedException e) {
                              throw new RuntimeException(e);
                          }
                      }
                  }
                  //將生產的產品打印出來
                  System.out.println("生產者生產了"+p.getBrand()+"---"+p.getName());
              }
          }
      }
      
      
      package com.gao.Project.Pro9;
      
      public class CustomerThread extends Thread{//消費者線程
          //共享商品
          private Product p;
      
          public CustomerThread(Product p) {
              this.p = p;
          }
      
          @Override
          public void run() {
              for (int i = 1; i <=10 ; i++) {// 消費次數
                 synchronized (p){//用同一個鎖鎖住,解決同步問題-->防止數據錯亂--->費列羅啤酒,哈爾濱巧克力
                     System.out.println("消費者消費了"+p.getBrand()+"---"+p.getName());
                 }
              }
          }
      }
      
      
      package com.gao.Project.Pro9;
      
      public class Test {
          public static void main(String[] args) {
              //共享的商品
              Product p = new Product();
              //創建生產者和消費者線程
              PuoducerThread pt = new PuoducerThread(p);
              CustomerThread ct = new CustomerThread(p);
              pt.start();
              ct.start();
          }
      }
      
      

      方法2:(同步)

      package com.gao.Project.Pro10;
      
      public class PuoducerThread extends Thread{ //生產者線程
          //共享商品
          private Product p ;
          //構造器
          public PuoducerThread(Product p) {
              this.p = p;
          }
      
          @Override
          public void run() {
              for (int i = 1; i <= 10 ; i++) {//生產10個商品   i--->生產次數
                  if(i % 2 == 0){
                      p.setProduct("費列羅","巧克力");
                  }else {
                      p.setProduct("哈爾濱","啤酒");
      
                  }
      
              }
          }
      }
      
      
      package com.gao.Project.Pro10;
      
      public class CustomerThread extends Thread{//消費者線程
          //共享商品
          private Product p;
      
          public CustomerThread(Product p) {
              this.p = p;
          }
      
          @Override
          public void run() {
              for (int i = 1; i <=10 ; i++) {// 消費次數
                  p.getProduct();
                 }
            }
      }
      
      
      package com.gao.Project.Pro10;
      
      public class Product {//商品類
          //品牌
          private String brand;
          //名字
          private String name;
      
          //引入一個燈    ture:紅燈   false:綠燈
          boolean flag = false;  //默認情況沒有商品,生產者得生產了之后才能消費
      
          public String getBrand() {
              return brand;
          }
      
          public void setBrand(String brand) {
              this.brand = brand;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
      
          //生產商品
          public synchronized void setProduct(String brand,String name){
              if(flag == true){//燈是紅的,證明有商品,生產者不生產,等待消費者消費
                  try {
                      wait();  //出現異常,用try catch 捕獲
                  } catch (InterruptedException e) {
                      throw new RuntimeException(e);
                  }
              }
              //燈是綠的,證明沒有商品,就生產
                  this.setBrand(brand);
                  try {
                      Thread.sleep(100);
                  } catch (InterruptedException e) {
                      throw new RuntimeException(e);
                  }
                  this.setName(name);
      
              //將生產的產品打印出來
              System.out.println("生產者生產了"+this.getBrand()+"---"+this.getName());
      
              //生產完以后,燈變色
              flag = true;
              //告訴消費者來消費
              notify();
          }
      
          //消費商品
          public synchronized void getProduct (){
              if(!flag){//(flag == false) 燈是綠的,證明沒有商品,消費者需要等待
                  try {
                      wait();
                  } catch (InterruptedException e) {
                      throw new RuntimeException(e);
                  }
              }
              //燈是紅的,證明有商品,可以消費
              System.out.println("消費者消費了"+this.getBrand()+"---"+this.getName());
              //消費完,燈變色
              flag = false;
              //告訴生產者趕緊生產
              notify();
          }
      }
      
      
      package com.gao.Project.Pro10;
      
      public class Test {
          public static void main(String[] args) {
              //共享的商品
              Product p = new Product();
              //創建生產者和消費者線程
              PuoducerThread pt = new PuoducerThread(p);
              CustomerThread ct = new CustomerThread(p);
              pt.start();
              ct.start();
          }
      }
      
      
      posted @ 2022-10-09 09:42  進步+吃飯  閱讀(19)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品线在线精品| 国产办公室秘书无码精品99| 国内精品久久久久影院日本| 亚洲AV无码秘?蜜桃蘑菇| 久久人妻av无码中文专区| 中文字幕午夜福利片午夜福利片97| 99中文字幕精品国产| 美女网站免费观看视频| 狠狠久久五月综合色和啪| 久久亚洲精品国产精品婷婷| 中文字幕av无码免费一区| 四虎国产精品永久在线看| 国产精品伦人视频免费看| 熟妇人妻中文a∨无码| 亚洲人成色99999在线观看| 清镇市| 国产成人a∨激情视频厨房| 国产SM重味一区二区三区| 绥宁县| 亚洲色偷偷色噜噜狠狠99| 露脸一二三区国语对白| 国产精品中文字幕免费| 精品蜜臀国产av一区二区| 高级会所人妻互换94部分| 久久精品国产亚洲av麻豆小说| 无码免费大香伊蕉在人线国产| 曰韩无码av一区二区免费 | 特级做a爰片毛片免费看无码| 亚洲国语自产一区第二页| 永久免费av网站可以直接看的| 梅州市| 成人福利国产午夜AV免费不卡在线| 亚洲精中文字幕二区三区| 久久av无码精品人妻出轨| 欧美国产日产一区二区| 鸡西市| 亚洲精品国产无套在线观| 成人无码h真人在线网站| 久久香蕉国产线看观看猫咪av| 国产毛片精品av一区二区 | 日韩中文字幕有码午夜美女|