Android 线程通信:使用 notify() 和 wait() 实现
在Android开发中,可以使用notify()
和wait()
方法来实现线程之间的通信。
首先,需要在共享对象上使用synchronized
关键字来获取锁,以确保线程安全。
然后,在等待线程中,可以使用wait()
方法释放锁并进入等待状态,直到其他线程调用同一个对象上的notify()
方法来唤醒等待线程。
在唤醒线程中,可以使用notify()
方法来通知等待线程,使其从等待状态转为就绪状态。
下面是一个示例代码,演示了如何使用notify()
和wait()
方法来实现线程通信:
public class ThreadCommunicationExample {
public static void main(String[] args) {
final Object lock = new Object();
Thread waitThread = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
try {
System.out.println("等待线程进入等待状态");
lock.wait(); // 释放锁并等待唤醒
System.out.println("等待线程被唤醒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Thread notifyThread = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
try {
Thread.sleep(2000); // 模拟耗时操作
System.out.println("唤醒等待线程");
lock.notify(); // 唤醒等待线程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
waitThread.start();
notifyThread.start();
}
}
在这个示例中,waitThread
线程进入等待状态并等待被唤醒,而notifyThread
线程在执行完耗时操作后唤醒等待线程。
注意,wait()
和notify()
方法必须在同一个对象上使用,否则会抛出IllegalMonitorStateException
异常。

原文地址: http://www.cveoy.top/t/topic/X2D 著作权归作者所有。请勿转载和采集!