2008-09-23 64 views

回答

33

在两个线程之间共享一个java.lang.Object,其唯一目的是告诉工作线程何时可以继续工作。每当工作线程达到一个地步,它应该睡觉了,它这样做:

stick.wait(); 

当视图线程完成它的onDraw工作,它调用此:

stick.notify(); 

注意的要求,即鉴于螺纹拥有对象上的监视器。在你的情况,这应该是相当简单的小同步块来执行:

void onDraw() { 
    ... 
    synchronized (stick) { 
    stick.notify(); 
    } 
} // end onDraw() 

这些方法请查阅java.lang.Object中的Javadoc(和notifyAll的,以防万一);他们写得很好。

2

如果你想要一个更高级别的concurreny API(带有诸如Barriers之类的东西),你可以尝试java 5并发API的后端,它可以在java 1.3和更高版本上运行,并且可以在Android上运行。 Object.wait/notify等工具可以工作,但它们可能有点简洁。

Backport-util-concurrent