休眠线程,直到事件在另一个线程中发生
2022-09-01 10:49:17
我在Android应用程序中有两个线程,一个是视图线程,另一个是工作线程。我想做的是,让工作线程休眠,直到视图线程终止对 onDraw 方法的处理。
我该怎么做?有没有等待信号或其他东西?
我在Android应用程序中有两个线程,一个是视图线程,另一个是工作线程。我想做的是,让工作线程休眠,直到视图线程终止对 onDraw 方法的处理。
我该怎么做?有没有等待信号或其他东西?
在两个线程之间共享一个 java.lang.对象,其唯一目的是告诉工作线程何时可以继续其工作。每当工作线程达到它应该休眠的点时,它就会这样做:
stick.wait();
当视图线程完成其 onDraw 工作时,它将调用以下内容:
stick.notify();
请注意视图线程拥有对象上的监视器的要求。在你的情况下,使用一个小的同步块来强制执行这应该相当简单:
void onDraw() {
...
synchronized (stick) {
stick.notify();
}
} // end onDraw()
关于这些方法,请咨询javadoc的java.lang.Object(和 notifyAll,以防万一);他们写得很好。
如果你想要一个更高级别的并发API(像 Barriers这样的东西),你可以尝试java 5并发API的向后移植,它适用于java 1.3及更高版本,并且可能适用于Android。像Object.wait/notify这样的软件可以工作,但它们可能有点简洁。