<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因為當被喚醒時,該線程處于鎖池等待獲取鎖,這個時候可能會有別的該線改變數組的大小。所以喚醒時繼續檢查數組是否已滿。
    14             try {
    15                this.wait(); //釋放掉當前的對象鎖,在等待池等待
    16            }
     catch (InterruptedException e) {
    17                e.printStackTrace();
    18            }

    19         }

    20         a[count++]=count;
    21         System.out.println(Thread.currentThread().getName()+"壓入數據:"+count);
    22         this.notify();  //喚醒生產者消費者線程
    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()+"彈出數據:"+count);
    35             return a[--count];
    36     }

    37}

    38/**
    39 *生產者
    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 *消費者
    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}

    線程狀態圖
    posted on 2010-08-19 10:19 朔望魔刃 閱讀(240) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 一区二区三区免费视频网站 | 亚洲不卡中文字幕| 国产h视频在线观看免费| A毛片毛片看免费| 久久久久亚洲AV无码专区体验| 欧美大尺寸SUV免费| 性生大片视频免费观看一级 | 亚洲精品国产电影午夜| 日本成人在线免费观看| 久久精品视频免费播放| 亚洲精华国产精华精华液好用| 亚洲一区二区三区无码中文字幕| 国产免费AV片在线播放唯爱网 | 超pen个人视频国产免费观看| 日韩电影免费在线观看网站| 亚洲日韩一区二区三区| 好看的电影网站亚洲一区| 日韩免费电影在线观看| 青青青国产手机频在线免费观看| 亚洲AV成人无码网站| 久久久无码精品亚洲日韩按摩| 五月婷婷亚洲综合| 亚洲国产精品美女久久久久| 亚洲VA中文字幕无码一二三区| 小小影视日本动漫观看免费 | 亚洲国产精品无码久久久蜜芽| 黄网址在线永久免费观看| 久久午夜无码免费| 一出一进一爽一粗一大视频免费的| 亚洲福利秒拍一区二区| 亚洲人成人无码网www电影首页| 国产黄色片在线免费观看| 亚洲高清视频免费| 毛片基地看看成人免费| 精品亚洲福利一区二区| 久久精品国产亚洲AV久 | 国产中文字幕在线免费观看| 亚洲AV无码一区二区三区性色| 77777_亚洲午夜久久多人| 国产AV无码专区亚洲AV男同| 亚洲性猛交XXXX|