温馨提示×

在Android中wait的线程同步

小樊
85
2024-12-05 02:37:19
栏目: 编程语言

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

0