回覆列表
  • 1 # 程式設計師修煉之路

    然後再來說notify和notifyAll的區別 如果執行緒呼叫了物件的 wait()方法,那麼執行緒便會處於該物件的等待池中,等待池中的執行緒不會去競爭該物件的鎖。

  • 2 # 水母星人

    notify()是java所有物件都具有的方法,繼承子object類並且為final,不能過載。其作用是喚醒一個百等待的執行緒,時序一般是這樣:度Threadt=newThread(newRunnable()publicvoidrun(){.synchronized(guard){guard.wait();//此處呼叫後該執行緒不再活動,置於等待狀態,切換到其他執行緒執行知}})guard.notify();呼叫道後虛擬機器可選擇任何一個呼叫了guard.wait()的執行緒投入執行,選擇順序不由程式碼控制,由虛擬機器實現。如果是notifyAll(),則喚內醒所有等待的執行緒執行。如果是用c++程式碼,一般要用到pthread庫pthread_cond_init建立一個所容謂的等待條件,可以在任何時間呼叫pthread_cond_wait進入等待,相當於呼叫guard.wait(),其他執行緒可以呼叫pthread_cond_signal喚醒,相當於notify還可以呼叫pthread_cond_braodcast,相當於notifyAll

  • 中秋節和大豐收的關聯?
  • 傳祺GS8和哈弗H9,哪個更“皮實”?