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