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