請參閱下面這段代碼,它已從Android的Asynctask中獲取。我認爲它是面向模式的軟件體系結構書中併發模式的半同步半異步模式的一個例子。有人可以確認嗎?在Android Asynctask中實現POSA的半同步半Asyncc模式
private static class SerialExecutor implements Executor {
final ArrayDeque<Runnable> mTasks = new ArrayDeque<Runnable>();
Runnable mActive;
public synchronized void execute(final Runnable r) {
mTasks.offer(new Runnable() {
public void run() {
try {
r.run();
} finally {
scheduleNext();
}
}
});
if (mActive == null) {
scheduleNext();
}
}
protected synchronized void scheduleNext() {
if ((mActive = mTasks.poll()) != null) {
THREAD_POOL_EXECUTOR.execute(mActive);
}
}
}
我已經有了全部的想法。當然,SerialExecutor是半同步 - 半異步模式的一個例子。這裏是我寫的Asynctask內部結構... https://docs.google.com/document/d/1_zihWXAwgTAdJc013-bOLUHPMrjeUBZnDuPkzMxEEj0/edit?usp=sharing –