2008-09-23 29 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

相關問題