我在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的,以防万一);他们写得很好。
如果你想要一个更高级别的concurreny API(带有诸如Barriers之类的东西),你可以尝试java 5并发API的后端,它可以在java 1.3和更高版本上运行,并且可以在Android上运行。 Object.wait/notify等工具可以工作,但它们可能有点简洁。