Java中經常會用到wait和await方法,這兩個方法都可以用來等待某些條件的實現,但是它們之間有一些差異。
wait方法
Object obj = new Object(); synchronized (obj) { while (condition) { obj.wait(); } }
wait方法是Object類中的一個方法,需要在synchronized塊中調用。當一個線程執行wait方法時,它會釋放對象鎖,直到其他線程調用notify或notifyAll方法才會被喚醒。
await方法
Lock lock = new ReentrantLock(); Condition condition = lock.newCondition(); lock.lock(); try { while (condition) { condition.await(); } } finally { lock.unlock(); }
await方法是Condition接口中的一個方法,需要在Lock塊中調用。當一個線程執行await方法時,它會釋放鎖并進入等待隊列,直到其他線程調用signal或signalAll方法才會被喚醒。
總的來說,wait和await方法的功能是相似的,都是等待某些條件的實現。但是它們的使用場景不太一樣,wait通常用于多線程之間的同步,而await則用于更加復雜的線程間通信場景。