欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂Java培訓之生產(chǎn)者消費者模式實例分析

2019-03-08 14:28:39 2352瀏覽

今天扣丁學堂Java培訓老師給大家介紹一下關于Java生產(chǎn)者消費者模式,結合實例形式分析了java生產(chǎn)者消費者模式的相關組成、原理及實現(xiàn)方法,首先java的生產(chǎn)者消費者模式,有三個部分組成,一個是生產(chǎn)者,一個是消費者,一個是緩存,這么做有什么好處呢?下面我們一起來看一下吧。




1.解耦(去依賴),如果是消費者直接調(diào)用生產(chǎn)者,那如果生產(chǎn)者的代碼變動了,消費者的代碼也需要隨之變動

2.高效,如果消費者直接掉生產(chǎn)者,執(zhí)行時間較長的話,會阻塞,影響其他業(yè)務的進行

3.負載均衡,如果消費者直接調(diào)生產(chǎn)者,那生產(chǎn)者和消費者就得在一起了,日后業(yè)務量非常大的話,要想減輕服務器的壓力,想拆分生產(chǎn)和消費,就很困難

/**
 * 我是生產(chǎn)者,負責生產(chǎn)
 */
public class Product implements Runnable {
 private Queue q;
 public Product(Queue q) {
 this.q = q;
 }
 @Override
 public void run() {
 try {
  for (int i = 0; i < 3; i++) {
  q.product("test" + i);
  }
 } catch (InterruptedException e) {
  e.printStackTrace();
 }
 }
}

/**
 *我是消費者,負責消費
 */
public class Consumer implements Runnable {
 private Queue q;
 public Consumer(Queue q){
 this.q = q;
 }
 @Override
 public void run() {
 try {
  for(int i=0 ; i < 3 ; i++){
  q.consumer();
  }
 } catch (InterruptedException e) {
  e.printStackTrace();
 }
 }
}

/**
 *
 *我是緩存,負責產(chǎn)品的存(生產(chǎn)后的放置)取(消費時的獲取)
 */
public class Queue {
 private final Object lock = new Object();
 private List<String> list = new ArrayList<String>();
 public void product(String param) throws InterruptedException {
 synchronized (lock) {
  System.out.println("product生產(chǎn)");
  list.add(param);
  lock.notify();
  lock.wait();
 }
 }
 public void consumer() throws InterruptedException {
 synchronized (lock) {
  lock.wait();
  System.out.println("product消費");
  if (list.size() > 0) {
  list.remove(list.size() - 1);
  }
  lock.notify();
 }
 }
}
public class TestMain {
 public static void main(String[] args) {
 Queue q = new Queue();
 Product p = new Product(q);
 Consumer s = new Consumer(q);
 Thread t1 = new Thread(p);
 Thread t2 = new Thread(s);
 t1.start();
 t2.start();
 }
}


以上就是關于扣丁學堂Java培訓之生產(chǎn)者消費者模式實例分析的詳細介紹,希望對同學們學習所說幫助,想要了解更多關于Java開發(fā)方面內(nèi)容的小伙伴,請關注扣丁學堂Java培訓官網(wǎng)、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平有專業(yè)的Java講師為您指導,此外扣丁學堂老師精心推出的Java視頻教程定能讓你快速掌握Java從入門到精通開發(fā)實戰(zhàn)技能。扣丁學堂Java技術交流群:670348138。

扣丁學堂微信公眾號


【關注微信公眾號獲取更多學習資料】



查看更多關于“Java開發(fā)資訊”的相關文章>>

標簽: Java培訓 Java視頻教程 Java多線程 Java面試題 Java學習視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部