在Android中,wait()和notify()或notifyAll()是Java提供的線程同步機制,主要用于協調多個線程之間的操作。這些方法必須在同步代碼塊或同步方法中使用,即在調用它們的對象上持有鎖。
以下是一個簡單的示例,說明如何在Android中使用wait()和notify():
public class MainActivity extends AppCompatActivity {
private final Object lock = new Object();
private boolean dataReady = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
// 模擬耗時操作
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 數據準備好后,通知主線程
synchronized (lock) {
dataReady = true;
lock.notify();
}
}
}).start();
// 主線程等待數據準備好
synchronized (lock) {
while (!dataReady) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 數據準備好后,執行后續操作
}
}
在這個示例中,我們創建了一個名為lock的對象,用于同步主線程和子線程。當子線程完成耗時操作后,它會將dataReady標志設置為true并調用lock.notify()來喚醒主線程。主線程通過lock.wait()等待數據準備好,一旦收到通知,就會繼續執行后續操作。