一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java生產者消費者模式實例分析

Java生產者消費者模式實例分析

2021-07-20 16:04Bug開發攻城獅 Java教程

這篇文章主要介紹了Java生產者消費者模式,結合實例形式分析了java生產者消費者模式的相關組成、原理及實現方法,需要的朋友可以參考下

本文實例講述了java生產者消費者模式。分享給大家供大家參考,具體如下:

java的生產者消費者模式,有三個部分組成,一個是生產者,一個是消費者,一個是緩存。

這么做有什么好處呢?

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

2.高效,如果消費者直接掉生產者,執行時間較長的話,會阻塞,影響其他業務的進行

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * 我是生產者,負責生產
 */
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();
 }
 }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 *我是消費者,負責消費
 */
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();
 }
 }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 *
 *我是緩存,負責產品的存(生產后的放置)取(消費時的獲取)
 */
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生產");
  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生產者消費者模式實例分析

希望本文所述對大家java程序設計有所幫助。

原文鏈接:https://blog.csdn.net/zy_281870667/article/details/70853474

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性xx色3d动画xx无尽 | 欧美人曾交 | 精品亚洲综合久久中文字幕 | 青青草国产免费国产是公开 | 国产成年人 | 国产亚洲综合精品一区二区三区 | 国产成人精品高清免费 | 久久无码人妻中文国产 | chinese国产人妖hd | 人人澡 人人澡碰人人看软件 | 欧美高清一区 | 激情乱文 | 精品网站| 国产一区二区三区在线看 | 国产午夜精品不卡视频 | meyd–456佐山爱在线播放 | 91专区| poverty中国老妇人 | 免费国产在线视频 | 久久久无码精品亚洲A片猫咪 | 5g影院成人 | 欧洲老太玩小伙 | 禁忌第一季第3季 | 午夜欧美福利视频 | pregnanthd产子 | 国产a一级| 日本免费在线观看视频 | 欧美日韩在线成人看片a | 久久伊人久久 | 91精品国产亚一区二区三区 | 极品久久 | 女班长的放荡日记高h | 亚洲123区 | 精品国产福利在线观看一区 | 亚洲国产在线观看免费视频 | 亚洲欧美色综合图小说 | 91久久碰国产| 亚洲国产精品线在线观看 | 国产亚洲人成网站在线观看不卡 | 大肥婆丰满大肥奶bbw肥 | 国产免费一区二区三区 |