在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()
等待数据准备好,一旦收到通知,就会继续执行后续操作。