激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - java多線程解決生產(chǎn)者消費者問題

java多線程解決生產(chǎn)者消費者問題

2019-12-19 13:40hitxueliang JAVA教程

這篇文章主要介紹了java多線程解決生產(chǎn)者消費者問題的方法,實例分析了java采用多線程的方法解決生產(chǎn)者消費者問題的相關(guān)技巧,需要的朋友可以參考下

本文實例講述了java多線程解決生產(chǎn)者消費者問題的方法。分享給大家供大家參考。具體分析如下:

題目是這樣的:

采用Java 多線程技術(shù),設(shè)計實現(xiàn)一個符合生產(chǎn)者和消費者問題的程序。對一個對象(槍膛)進行操作,其最大容量是12顆子彈。生產(chǎn)者線程是一個壓入線程,它不斷向槍膛中壓入子彈;消費者線程是一個射出線程,它不斷從槍膛中射出子彈。

要求:

(1)給出分析過程說明。
(2)程序輸出,要模擬體現(xiàn)對槍膛的壓入和射出操作;
(2)設(shè)計程序時應(yīng)考慮到兩個線程的同步問題。

這個和著名的生產(chǎn)者消費者問題幾乎是一樣的,這里做一下簡單分析。

還是直接用代碼說話吧,注釋寫的很明白

?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package test;
import java.util.ArrayList;
import java.util.List;
public class testGun {
 public static void main(String[] args)
 {
 GunClip clip=new GunClip();
 Producer p=new Producer(clip);
 Concumer c=new Concumer(clip);
 p.start();
 c.start();
 }
}
/* 首先我要有一個彈夾,*/
class GunClip   //彈夾  
{
 private List<Integer> list=null;//用來放子彈
 private boolean bFull =false ; //理解boolean變量很重要,表示滿沒滿
 //函數(shù)功能,像彈夾中放子彈
 public synchronized void put(List list){
 if(!bFull){//意思是說彈夾沒有滿,那么就像里面放子彈
  this.list=list;
  bFull=true;//放滿了子彈,在把boolean變量變?yōu)閠rue表示,彈夾滿了
  notify();//通知,等待取子彈的線程來取子彈
 }
 //下面的try中得wait是當(dāng)彈夾滿了的情況下,
 //即boolean為true,暫停本線程,等待取子彈
 try{
  wait();
 }catch(Exception e){
  e.printStackTrace();
 }
 }
 public synchronized void get(){
 if(!bFull){//如果彈夾沒滿那么就不能取子彈
  try{
  wait();//彈夾沒滿,所以取不了,只能等待,只有彈夾滿了才能取
  }catch(Exception e){
  e.printStackTrace();
   }
 }
 //下面是彈夾滿了,那么我開始取子彈
 System.out.println("\n"+"機槍開始射出子彈:"+"\n");
 for(int i=list.size();i>0;i--){
      int j=(Integer)list.get(i-1);
  System.out.println("已射出第"+j+"顆子彈");
 }
 //彈夾被取空了,即沒子彈了,那么只能等待重新填充,
 //所以boolean變?yōu)閒alse,表示沒滿,通知裝子彈的線程裝子彈
 bFull=false;
 notify();
 }
}
//生產(chǎn)者,即裝子彈,下面和公告板差不多,要有一個彈夾的實體
class Producer extends Thread
{
 private GunClip clip;
 private List<Integer> list;
 Producer(GunClip clip){
 this.clip=clip;
 }
 public void run(){
 for(int i=0;i<3;i++){ //讓它生產(chǎn)3個彈夾
  list=new ArrayList();
  System.out.println("\n"+"機槍開始壓入子彈:"+"\n");
  for(int j=0;j<12;j++){
  list.add(j+1);
  System.out.println("已壓入第"+(j+1)+"顆子彈");
  }
  clip.put(list);
  }
 }
}
//消費者,發(fā)射子彈
class Concumer extends Thread
{
 private GunClip clip;
 Concumer(GunClip clip){
 this.clip=clip;
 }
 public void run(){
 while(true){
  clip.get();
 }
 }
}

希望本文所述對大家的java程序設(shè)計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青草成人免费视频在线 | 99热久草| 成人午夜精品 | 日韩精品久久久久久 | 毛片小网站 | 日本不卡一二三区 | 亚洲欧美日韩一区二区三区在线观看 | 全黄毛片| 多男操一女视频 | 毛片视频免费观看 | 免费色片 | 午夜a狂野欧美一区二区 | 日韩视频精品一区 | 亚州视频在线 | 免费黄色小视频网站 | 污片视频网站 | 高清国产免费 | 毛片大全在线观看 | 国产乱淫av | 成人三级黄色片 | 久久亚洲成人 | 国产超碰人人爽人人做人人爱 | 国产18视频 | 在线亚洲欧美 | 中国av免费在线观看 | 日本高清com| 久久久久久久爱 | 成年人小视频在线观看 | 欧美成人免费一级 | 少妇色诱麻豆色哟哟 | 亚洲午夜在线 | 福利一区二区三区视频在线观看 | 91精品最新国内在线播放 | 超碰97人 | 日韩欧美电影在线观看 | 热99视频| 久久精品9 | 午夜精品久久久久久久99热浪潮 | 99日韩精品视频 | 狠狠婷婷综合久久久久久妖精 | 欧美黄色一级带 |