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

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

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

    也談線程的休眠與等待

    關于線程間的交互和共享數據通常有輪詢和通知機制。一下舉例說明:Thread1和Thread2共享一塊數據ShareData,Thread1使用數據,Thread2更新數據。當Thread1使用數據時發現數據沒有更新就可以先休眠(sleep())一段時間然后再去判斷是否更新,如此反復直到數據可用,這就是所述的輪詢機制。可以看出輪詢機制需要不斷的輪詢數據狀態,很耗費資源;當采用通知機制時過程是這樣的,Thread1發現數據不可用就在ShareData上等待(ShareData.wait()),當Thread2更新數據后就通知所有在ShareData上等待的線程(ShareData.notifyAll()),這樣Thread1受到通知繼續運行。

    關于等待和休眠還有另一個區別就是當線程等待時,該線程鎖定的資源是釋放掉的,這時其它線程是可以鎖定這些資源的,當線程被喚醒或者等待時限到時線程重新獲取資源才能繼續運行;而當線程休眠時線程鎖定的資源是不被釋放的。

    還有一點就是要在對象lock上等待時是必須先要獲取lock的對象鎖才能進行的,即必須要類似下面的邏輯 synchronized(lock){ lock.wait()}

    以下為一個簡單的示例:

    package  sinpo.usagedemo;

    /**
      * 該例子說明線程休眠與等待以及注意事項。
     
      @author  徐辛波(sinpo.xu@hotmail.com) 
      * Oct 22, 2008
      */
    public class  PendingThreadDemo  {
         public  Console console =  new  Console () ;
         private  void  writeToConsole1 () {
             synchronized ( console ){
                 try  {
                     Thread.sleep ( 1000 ) ; //NOTE:sleep時并未釋放console別的線程是不能鎖定console的
                     //TODO do things
                 catch  ( InterruptedException e ) {
                     e.printStackTrace () ;
                 }
             }
         }
        
         private  void  writeToConsole2 () {
             synchronized ( console ){
                 try  {
                     console.wait ( 1 * 1000 ) ; //NOTE:wait時別的線程是可以鎖定console的
                     //TODO do things
                 catch  ( InterruptedException e ) {
                     e.printStackTrace () ;
                 }
             }
         }
    }
    //控制臺類
    class  Console  {
         //TODO implements me
    }

    posted on 2008-10-22 23:26 徐辛波 閱讀(1272) 評論(0)  編輯  收藏 所屬分類: source pieces

    導航

    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线中文高清资源免费观看| 国产精品入口麻豆免费观看| 亚洲午夜福利精品无码| 国产AV无码专区亚洲AV蜜芽| 四虎免费在线观看| 亚洲精品无码高潮喷水A片软| 最近的免费中文字幕视频| 亚洲人成网站在线在线观看| 国产无遮挡裸体免费视频| 精品久久久久久久久亚洲偷窥女厕| 国产精品免费看久久久久| 猫咪免费人成网站在线观看入口| 在线a亚洲v天堂网2018| 国产精品免费久久久久影院| 久久久久亚洲AV无码专区首| 精品免费人成视频app| 亚洲一级特黄特黄的大片| 国产精品另类激情久久久免费| 黄人成a动漫片免费网站| 亚洲综合国产一区二区三区| 国产一级片免费看| 亚洲熟妇色自偷自拍另类| 在线播放免费人成视频在线观看| 国产成人精品亚洲一区| 亚洲夜夜欢A∨一区二区三区| 国产成人精品免费久久久久| 亚洲国产模特在线播放| 日批日出水久久亚洲精品tv| 永久在线观看免费视频| 亚洲AV综合色区无码二区偷拍| 国产无遮挡色视频免费视频| 最近中文字幕大全免费版在线| 亚洲福利电影一区二区?| 国产aa免费视频| 久久久久免费精品国产小说| 亚洲精品无码永久在线观看男男 | 免费无码又爽又刺激网站直播| 亚洲国语在线视频手机在线| 又粗又黄又猛又爽大片免费| 亚洲精品免费观看| 免费人成大片在线观看播放|