我在Android应用程序中有两个线程,一个是视图线程,另一个是工作线程。我想要做的是,睡眠工作线程,直到视图线程终止onDraw方法的处理。
我怎么能这样做?有没有等待信号或什么?
答案 0 :(得分:38)
在两个线程之间共享一个java.lang.Object,其唯一目的是告诉工作线程何时可以继续工作。每当工作线程到达应该睡眠的点时,它就会这样做:
stick.wait();
当视图线程完成onDraw工作时,它会调用:
stick.notify();
请注意视图线程拥有对象上的监视器的要求。在您的情况下,使用小型同步块执行此操作应该非常简单:
void onDraw() {
...
synchronized (stick) {
stick.notify();
}
} // end onDraw()
在这些方法上查询java.lang.Object的javadoc(以及notifyAll,以防万一);他们的写得非常好。
答案 1 :(得分:2)
如果你想要一个更高级别的concurreny API(像Barriers这样的东西),你可以尝试java 5并发API的后端,它适用于java 1.3及更高版本,并且可以在Android上运行。像Object.wait / notify这样的东西可以工作,但它们可能有点简洁。