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

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

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

    posts - 66,comments - 41,trackbacks - 0

    復(fù)習(xí)多線程,一個經(jīng)典的實(shí)例:生產(chǎn)者消費(fèi)者問題:

    1.number表示產(chǎn)品編號,flag表示現(xiàn)在應(yīng)該由誰來操作.

    2.ProcuctData類中有兩個同步方法setNumber()和getNumber(),分別代表生產(chǎn)者生產(chǎn)產(chǎn)品和消費(fèi)者消費(fèi) 產(chǎn)品。

    3.兩個線程類Producer和Consumer分別代表生產(chǎn)者與消費(fèi)者

    Java代碼
    1. package cn.luxsoft.javafirststep.Thread;  
    2.   
    3. class ProductData {  
    4.   
    5.     // 產(chǎn)品編號  
    6.     private int number;  
    7.   
    8.     // 標(biāo)記位  
    9.     private boolean flag = true;  
    10.   
    11.     public synchronized void setNumber(int number) {  
    12.         if (!flag) {  
    13.             try {  
    14.                 // 末消費(fèi)等待  
    15.                 wait();  
    16.             } catch (InterruptedException e) {  
    17.                 e.printStackTrace();  
    18.             }  
    19.         }  
    20.         this.number = number;  
    21.   
    22.         // 標(biāo)記已經(jīng)產(chǎn)生  
    23.         flag = false;  
    24.   
    25.         // 通知消費(fèi)者已經(jīng)生產(chǎn),可以消費(fèi)  
    26.         notify();  
    27.     }  
    28.   
    29.     public synchronized int getNumber() {  
    30.         if (flag) {  
    31.             try {  
    32.                 // 未生產(chǎn)等待  
    33.                 wait();  
    34.             } catch (InterruptedException e) {  
    35.                 e.printStackTrace();  
    36.             }  
    37.         }  
    38.   
    39.         // 標(biāo)記已消費(fèi)  
    40.         flag = true;  
    41.   
    42.         // 通知需要生產(chǎn)  
    43.         notify();  
    44.         return this.number;  
    45.     }  
    46. }  
    47.   
    48. class Procucer extends Thread {  
    49.     private ProductData s;  
    50.   
    51.     Procucer(ProductData s) {  
    52.         this.s = s;  
    53.     }  
    54.   
    55.     @Override  
    56.     public void run() {  
    57.         for (int i = 0; i < 10; i++) {  
    58.             s.setNumber(i);  
    59.             System.out.println("P[" + i + "]生產(chǎn).");  
    60.         }  
    61.     }  
    62. }  
    63.   
    64. class Consumer extends Thread {  
    65.     private ProductData s;  
    66.   
    67.     Consumer(ProductData s) {  
    68.         this.s = s;  
    69.     }  
    70.   
    71.     public void run() {  
    72.         int i;  
    73.   
    74.         do {  
    75.             i = s.getNumber();  
    76.             System.out.println("P[" + i + "]消費(fèi).**");  
    77.         } while (i != 9);  
    78.     }  
    79. }  
    80.   
    81. public class ProducerConsumer {  
    82.   
    83.     /** 
    84.      * @param args 
    85.      */  
    86.   
    87.     public static void main(String[] args) {  
    88.   
    89.         ProductData s = new ProductData();  
    90.         Thread producer = new Procucer(s);  
    91.         Thread consumer = new Consumer(s);  
    92.   
    93.         producer.start();  
    94.         consumer.start();  
    95.     }  
    96.   
    97. }  

    文章來源:http://www.my1984.net/?action=show&id=177

    MSN:
    posted on 2009-03-08 17:12 kylixlu 閱讀(793) 評論(0)  編輯  收藏 所屬分類: J2SE
    主站蜘蛛池模板: 亚洲欧洲精品久久| 久久精品国产亚洲AV高清热| 亚洲色一区二区三区四区| 99视频在线免费看| 亚洲最大黄色网站| av无码国产在线看免费网站 | 美女免费精品高清毛片在线视| 久久久www成人免费毛片| wwwxxx亚洲| 免费网站看v片在线香蕉| 亚洲另类自拍丝袜第五页| 四虎在线免费播放| 免费无码午夜福利片| 久久精品国产精品亚洲人人| 中文成人久久久久影院免费观看 | 久久国产免费福利永久| 亚洲二区在线视频| 精品国产精品久久一区免费式| 亚洲精品国产高清在线观看| 免费大香伊蕉在人线国产| 国产免费高清69式视频在线观看| 亚洲乱码中文字幕综合| 中文字幕免费在线| 亚洲乱色熟女一区二区三区蜜臀| 国产三级免费电影| a毛片在线免费观看| 亚洲国产日韩在线人成下载| 国产美女无遮挡免费视频网站 | 亚洲一区二区三区深夜天堂| 99久久免费国产精品特黄| 国产一区二区三区亚洲综合| 最新亚洲成av人免费看| 亚洲视频在线免费播放| 亚洲成a人片在线观看天堂无码 | 特级毛片aaaa级毛片免费| 亚洲AV无码乱码国产麻豆穿越| 日韩版码免费福利视频| 尤物视频在线免费观看| 亚洲高清免费在线观看| 四虎影视免费永久在线观看| 免费不卡在线观看AV|