<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í),該線程處于鎖池等待獲取鎖,這個(gè)時(shí)候可能會(huì)有別的該線改變數(shù)組的大小。所以喚醒時(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无码免费| 久久亚洲高清综合| 一级做a爰片性色毛片免费网站 | 综合亚洲伊人午夜网 | 美女一级毛片免费观看| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 免费无遮挡无码视频在线观看 | 噼里啪啦电影在线观看免费高清 | 免费一级毛片清高播放| 女人裸身j部免费视频无遮挡| 亚洲av无码专区在线观看素人| 国产高清对白在线观看免费91| 国产亚洲精品线观看动态图| 中国一级特黄的片子免费| 亚洲成人中文字幕| 手机在线看永久av片免费| 亚洲国产精品无码观看久久| 一级毛片直播亚洲| 色www永久免费| 亚洲最大黄色网址| 狠狠久久永久免费观看| sss在线观看免费高清| 97se亚洲综合在线| 四虎www成人影院免费观看| 四虎一区二区成人免费影院网址| 亚洲AV无码码潮喷在线观看| 亚洲成人免费网址| 国产成人精品亚洲一区| 亚洲国产精品无码AAA片| 亚洲精品免费网站| 成年免费大片黄在线观看com| 亚洲V无码一区二区三区四区观看| 成年人视频免费在线观看| 美女被羞羞网站免费下载| 久久久久亚洲精品无码系列| 性感美女视频在线观看免费精品| 一级特级女人18毛片免费视频| 亚洲精品视频观看| 国产av无码专区亚洲国产精品| 120秒男女动态视频免费|