notify()是java所有對象都具有的方法,繼承子object類(lèi)并且為final,不能重載。
其作用是喚醒一個(gè)等待的線(xiàn)程,時(shí)序一般是這樣:
Thread t = new Thread( new Runnable()
public void run()
{
.
synchronized(guard)
{
guard.wait();//此處調用后該線(xiàn)程不再活動(dòng),置于等待狀態(tài),切換到其他線(xiàn)程運行
}
}
)
guard.notify(); 調用后虛擬機可選擇任何一個(gè)調用了guard.wait()的線(xiàn)程投入運行,選擇順序不由代碼控制,由虛擬機實(shí)現。
如果是notifyAll(),則喚醒所有等待的線(xiàn)程運行。
如果是用c++代碼,一般要用到pthread庫
pthread_cond_init創(chuàng )建一個(gè)所謂的等待條件,
可以在任何時(shí)間調用pthread_cond_wait進(jìn)入等待,相當于調用guard.wait(),
其他線(xiàn)程可以調用pthread_cond_signal喚醒,相當于notify
還可以調用pthread_cond_braodcast,相當于notifyAll
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.777秒