我在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等工具可以工作,但它們可能有點簡潔。