<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í)多線程,一個(gè)經(jīng)典的實(shí)例:生產(chǎn)者消費(fèi)者問題:

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

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

    3.兩個(gè)線程類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
    主站蜘蛛池模板: 国产啪精品视频网站免费尤物 | 国产免费人成视频在线播放播| 99热在线免费观看| 亚洲?v女人的天堂在线观看| 亚洲国产综合专区电影在线| 亚洲av色香蕉一区二区三区| 亚洲香蕉免费有线视频| 亚洲乳大丰满中文字幕| 又大又硬又粗又黄的视频免费看| 中国在线观看免费高清完整版| 亚洲gv猛男gv无码男同短文| 一级毛片人与动免费观看| 亚洲一级片免费看| 四虎一区二区成人免费影院网址| 亚洲成a人片在线观看日本| 性xxxxx大片免费视频| 亚洲国产精品人久久| 日本免费一区尤物| 亚洲日韩中文字幕无码一区| 无码国产精品一区二区免费I6| 色屁屁www影院免费观看视频| 国产一区二区三区在线观看免费| 亚洲国产精品成人综合色在线| 青青草国产免费久久久91| 亚洲精华液一二三产区| 久久精品国产亚洲av麻豆| 情侣视频精品免费的国产| 99热在线免费播放| 中文字幕免费在线看电影大全 | 亚洲av无码专区在线电影天堂| 久久精品国产精品亚洲艾草网| 免费v片在线观看| 久青草视频97国内免费影视| 亚洲色精品三区二区一区| 国产成人亚洲精品91专区手机| 午夜理伦剧场免费| 特级毛片免费观看视频| 亚洲综合av一区二区三区不卡 | 亚洲国产午夜精品理论片| 国产一卡2卡3卡4卡2021免费观看| 亚洲欧洲另类春色校园网站|