休眠一个线程,直到另一个线程参加了一个事件
时间:2020-03-06 14:36:21 来源:igfitidea点击:
我在Android应用程序中有两个线程,一个是视图线程,另一个是工作线程。我想做的是,使工作线程休眠,直到视图线程终止onDraw方法的处理为止。
我该怎么做?是否有等待信号的东西?
解决方案
在两个线程之间共享一个java.lang.Object,其唯一目的是告诉工作线程何时可以继续工作。每当工作线程到达应休眠的位置时,它将执行以下操作:
stick.wait();
当视图线程完成其onDraw工作时,它将调用此方法:
stick.notify();
请注意,视图线程拥有对象上的监视器的要求。在情况下,使用一个小的同步块可以很容易地实现这一点:
void onDraw() { ... synchronized (stick) { stick.notify(); } } // end onDraw()
有关这些方法,请向javadoc咨询java.lang.Object(以防万一,请注意notifyAll);他们写得很好。
如果我们需要更高级别的并发API(例如Barriers),则可以尝试Java 5并发API的反向移植,该Java 5并发API适用于Java 1.3及更高版本,并且可能适用于Android。 Object.wait / notify之类的东西可以使用,但是它们可能有点简洁。
Backport-util-concurrent