Java中,wait()和await()都是用于線程等待的關(guān)鍵字,但是它們的使用場景和語法有所不同。
wait()方法是屬于Object類的,它用于讓當(dāng)前線程等待,直到其他線程執(zhí)行notify()或notifyAll()方法來喚醒當(dāng)前線程。wait()方法的語法如下:
synchronized(obj){ while(condition){ obj.wait(); } }
其中,obj是任意一個Object對象,condition是一個線程等待的條件。
await()方法則是在Java 5引入的一個新方法,它屬于Condition接口的一部分,它可以讓線程等待一定的時間,或者等待其他線程執(zhí)行signal()或signalAll()方法來喚醒當(dāng)前線程。await()方法的語法如下:
Lock lock = new ReentrantLock(); Condition condition = lock.newCondition(); lock.lock(); try{ while(condition){ condition.await(); } }finally{ lock.unlock(); }
其中,Lock是一個鎖對象,Condition是基于鎖創(chuàng)建的條件,await()方法的調(diào)用必須在鎖的保護下。
總之,wait()和await()都是用于實現(xiàn)線程等待的方法,但是它們的語法和使用場景有所不同,開發(fā)者可以根據(jù)具體的需求選擇使用哪一種方法。