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

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

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

    洛神賦

    子虛烏有

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      7 Posts :: 10 Stories :: 0 Comments :: 0 Trackbacks

    線程間通信:一個線程向數(shù)據(jù)存儲空間添加數(shù)據(jù)(唐老鴨),另一個線程從數(shù)據(jù)存儲空間取出數(shù)據(jù)(米琪)。

    程序有兩種以外需要考慮:

    1、      假設(shè)唐老鴨線程剛向數(shù)據(jù)存儲空間添加了一輛車的名字。還沒有加入這輛車的顏色,CPU就切換到了米琪線程,唐老鴨線程將把這輛車的名字和上輛車的顏色聯(lián)系到了一起。

    2 、唐老鴨了若干次的數(shù)據(jù)。米琪才開始取數(shù)據(jù),或者是,米琪取完了一個數(shù)據(jù)后,還沒等到唐老鴨放入新的數(shù)據(jù),又重復(fù)取出已取過的數(shù)據(jù)。

    可能出現(xiàn)的問題:

    1唐老鴨米琪快時,米琪會漏掉一些數(shù)據(jù)沒有取到。

    2、      米琪唐老鴨快時,米琪取相同的數(shù)據(jù)。

    多個線程共享同一資源的時候,必須進行同步,采用同步方法,解決第一個問題。

    線程的等待和喚醒機制:

    wait():告訴當(dāng)前線程放棄監(jiān)視器并進入睡眠狀態(tài),直到其他線程進入同一監(jiān)視器并調(diào)用notify為止。

    notify():喚醒同一對象監(jiān)視器中調(diào)用wait的第一個線程。

    程序中采用線程的等待和喚醒機制,當(dāng)發(fā)現(xiàn)米琪沒有取走內(nèi)容時,唐老鴨應(yīng)該等待,當(dāng)米琪把內(nèi)容取走之后,唐老鴨才可以放。這樣解決了第二個問題。


    代碼如下:


    package Killva.IOchaper4.o3;


    class Animal{
     private String name ="唐老鴨";
     private String  sex= "公";
     private boolean flag=false;
     
     public synchronized void set(String name, String sex){//生產(chǎn)者
      //如果flag的值不是true則要等待
      
      if(!flag){
       //等待
       try{
        wait();
       }catch(Exception e){}
       
      }
      //如果向下繼續(xù)執(zhí)行了,則表示可以設(shè)置, flag =true
      this.name=name;
      this.sex=sex;
      //修改設(shè)置的標(biāo)志
      flag = false;
      //喚醒其他線程
      notify();
     }
     //設(shè)置一個輸出的方法
     public synchronized void get(){
      //如果flag的值為true的時候,表示要等待
      if(flag){
       try{
        wait();
        
       }catch(Exception e){}
       
      }
      //如果向下執(zhí)行了,就表示允許
      System.out.println(this.name+"-->"+this.sex);
      //改變標(biāo)簽
      flag =true;
      notify();
     }
    }

    class Pro implements Runnable{
     Animal per =null;
     public Pro(Animal p){
      this.per=p;
      
     }
     public void run() {
      int i =0;
      
      while (true){
       
       if(i==0){
        per.set("米琪", "母");
        i=1;
        
       }else{
        per.set("唐老鴨", "公");
        i=0;
       }
      }
     }
    }

    class Cus implements Runnable{
     Animal per =null;
     public Cus(Animal p){
      this.per=p;
     }
     public void run() {
      while(true){
         per.get();
      }
     }
    }


    public class Demo01 {
     //主方法
     public static void main(String[] args){
      Animal per =new Animal();
      Pro p =new Pro(per);
      Cus c =new Cus(per);
      
      new Thread(p).start();
      new Thread(c).start();
      
     }

    }

    運行結(jié)果:




    感謝閱讀 !!!歡迎交流!!!    QQ:237333696
    posted on 2010-11-13 11:12 洛神賦 閱讀(919) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成人免费无码大片a毛片软件| 久久精品中文字幕免费| 无码中文在线二区免费| 亚洲日本国产乱码va在线观看| 免费一区二区三区| 婷婷亚洲久悠悠色悠在线播放| a在线观看免费网址大全| 久久精品国产69国产精品亚洲| a色毛片免费视频| 亚洲AV日韩AV永久无码免下载| 少妇人妻偷人精品免费视频| 亚洲高清免费在线观看| 无码国产精品一区二区免费式影视 | 国产成人精品亚洲日本在线| 国产精品亚洲产品一区二区三区 | 美女黄色免费网站| 亚洲欧洲中文日韩久久AV乱码 | 1000部拍拍拍18免费网站| 国产精品亚洲自在线播放页码| 四虎免费在线观看| 免费无码专区毛片高潮喷水| 国产亚洲免费的视频看| 国产91色综合久久免费| 亚洲av无码专区亚洲av不卡| 亚洲国产专区一区| 无码精品一区二区三区免费视频 | 亚洲人成影院在线无码按摩店| 久久aa毛片免费播放嗯啊| 亚洲制服丝袜第一页| 免费萌白酱国产一区二区| 国产在线观看无码免费视频| 日本成人在线免费观看| 亚洲免费在线观看| 亚洲美女视频网址| 免费一看一级毛片人| 久久成人无码国产免费播放| 亚洲色大成网站www尤物| 久久亚洲国产中v天仙www| 最好免费观看韩国+日本| 久久一区二区三区免费| 亚洲www在线观看|