溫馨提示×

在Android中wait的線程同步

小樊
103
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女