<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无码国产精品麻豆天美| 黄床大片免费30分钟国产精品| 亚洲av中文无码乱人伦在线播放| 成人午夜18免费看| 99久久久国产精品免费牛牛| 美美女高清毛片视频黄的一免费| 91亚洲国产成人久久精品| 亚洲国产精品VA在线看黑人| 免费va在线观看| 在线播放高清国语自产拍免费| 欧洲精品99毛片免费高清观看| 在线观看人成视频免费无遮挡 | 国产亚洲男人的天堂在线观看| 久久久久亚洲av无码专区| 亚洲精品午夜无码专区| 亚洲国产成人五月综合网| 在线观看亚洲免费| 永久免费观看的毛片的网站| 久久天天躁狠狠躁夜夜免费观看| 91九色老熟女免费资源站| 91高清免费国产自产| 精品国产sm捆绑最大网免费站| 2019中文字幕在线电影免费| 午夜老司机永久免费看片| 久久久精品免费视频| 国产午夜精品久久久久免费视| 成人免费无码H在线观看不卡| 久久毛片免费看一区二区三区| v片免费在线观看| 一个人免费观看日本www视频| 黄色a级免费网站| 特a级免费高清黄色片| 羞羞视频免费网站入口| 色多多免费视频观看区一区| 黄色片网站在线免费观看| 男女交性无遮挡免费视频| 人成电影网在线观看免费| 日韩在线一区二区三区免费视频| 日本高清不卡中文字幕免费| 五月天婷婷精品免费视频| 丁香花在线观看免费观看图片|