熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Notify()和notifyall()的原理

2013-11-23 19:18:40  來源: Java核心技術 

  在java多線程編程中就要涉及到了對於資源的訪問當多個線程同時訪問一個資源的時候就要涉及到一種訪問策略java提供了鎖的機制就是一個線程訪問這個資源的時候可以先把這個資源鎖住可以用synchronized(the object)來鎖定the object其他訪問這個資源的線程就進入阻塞狀態直到當前的線程執行了這個對象的notify或者notifyall其他訪問這個對象的阻塞狀態的線程才有可能變成就緒狀態其中notify是喚醒一個線程而notifyall是喚醒所有阻塞進程

  示例如下

  public void rendezvousEvent(RendezvousEvent event) {

  if (eventgetType() == RendezvousEventRDVCONNECT || eventgetType() == RendezvousEventRDVRECONNECT || eventgetType() == RendezvousEventBECAMERDV) {

  synchronized (networkConnectLock) {

  //同步資源也就是鎖定了

  connected = true;

  networkConnectLocknotifyAll(); //喚醒其他阻塞線程也就是解鎖了

  }

  }

  }

  文章出處DIY部落(_webprogram/jsp/jsp_js//l)


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26632.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.