<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-95  評論-31  文章-10  trackbacks-0
     1public class MyStack {
     2    private int[] a;
     3    private int count = 0;
     4    public final int MAX_SIZE;
     5
     6    public MyStack(int size) {
     7        MAX_SIZE = size;
     8        a = new int[size];
     9        count = 0;
    10    }

    11
    12    public synchronized void push() {
    13         while(count==MAX_SIZE){//這里用while而不是if因?yàn)楫?dāng)被喚醒時,該線程處于鎖池等待獲取鎖,這個時候可能會有別的該線改變數(shù)組的大小。所以喚醒時繼續(xù)檢查數(shù)組是否已滿。
    14             try {
    15                this.wait(); //釋放掉當(dāng)前的對象鎖,在等待池等待
    16            }
     catch (InterruptedException e) {
    17                e.printStackTrace();
    18            }

    19         }

    20         a[count++]=count;
    21         System.out.println(Thread.currentThread().getName()+"壓入數(shù)據(jù):"+count);
    22         this.notify();  //喚醒生產(chǎn)者消費(fèi)者線程
    23    }

    24
    25    public synchronized int pop() {
    26             while(count ==0){
    27                 try {
    28                    this.wait();
    29                }
     catch (InterruptedException e) {
    30                    e.printStackTrace();
    31                }

    32             }

    33             this.notify();
    34             System.out.println(Thread.currentThread().getName()+"彈出數(shù)據(jù):"+count);
    35             return a[--count];
    36     }

    37}

    38/**
    39 *生產(chǎn)者
    40 **/

    41public class Producer extends Thread {
    42
    43    private MyStack stack;
    44    
    45    public Producer(MyStack stack){
    46        this.stack = stack;
    47    }

    48    @Override
    49    public void run() {
    50        while (true{
    51            stack.push();
    52            try {
    53                Thread.sleep(200);
    54            }
     catch (InterruptedException e) {
    55                e.printStackTrace();
    56            }

    57        }

    58    }

    59}

    60/**
    61 *消費(fèi)者
    62 **/

    63public class Consumer extends Thread{
    64             
    65    private MyStack stack;
    66    
    67    public Consumer(MyStack stack){
    68        this.stack = stack;
    69    }

    70    
    71    @Override
    72    public void run() {
    73        while(true){
    74            stack.pop();
    75            try {
    76                Thread.sleep(300);
    77            }
     catch (InterruptedException e) {
    78                e.printStackTrace();
    79            }

    80        }

    81    }

    82}

    線程狀態(tài)圖
    posted on 2010-08-19 10:19 朔望魔刃 閱讀(234) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲国产精品综合久久网络| 中文字幕亚洲图片| 美女视频免费看一区二区| 午夜亚洲国产成人不卡在线| 成人免费一区二区三区| 亚洲高清不卡视频| 日韩在线天堂免费观看| 精品多毛少妇人妻AV免费久久| 亚洲AV乱码一区二区三区林ゆな| 免费观看美女用震蛋喷水的视频 | 亚洲精品国产成人专区| 成年大片免费视频| 国产免费人成视频尤勿视频| 亚洲欧洲日韩在线电影| 亚洲AV无码一区二三区| 99热在线精品免费播放6| 日韩亚洲产在线观看| 亚洲午夜福利717| 免费无码肉片在线观看| h视频在线观看免费| 亚洲中文字幕无码一去台湾| 国产亚洲色婷婷久久99精品91| 成人免费毛片内射美女-百度| 国产精品永久免费| 亚洲国产成a人v在线观看| 亚洲乱码国产乱码精品精| 麻豆视频免费观看| 一级特黄录像视频免费| 久久综合久久综合亚洲| 亚洲国产天堂在线观看| 亚洲不卡AV影片在线播放| 91情侣在线精品国产免费| 国内少妇偷人精品视频免费| 无码色偷偷亚洲国内自拍| 亚洲国产成+人+综合| 亚洲精品成人无码中文毛片不卡| 国产高清在线免费视频| 国产成人免费在线| 久爱免费观看在线网站| 黄色视频在线免费观看| 国产精品亚洲综合网站|