2013-11-14 4 views
1

Пожалуйста, обратитесь к следующему фрагменту кода, который был взят из Asynctask Android. я думаю, что это пример Half Sync Half Async-шаблона параллельных шаблонов из книги Pattern Oriented Software Architecture. Может кто-нибудь, пожалуйста, подтвердите?Реализация Half Sync Половина Asyncc модели POSA в Android Asynctask

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);   
     } 
    }  
} 
+0

У меня есть вся идея. Конечно, SerialExecutor является примером Half Sync - Half Async. Здесь идет моя запись для внутренних элементов Asynctask ... https://docs.google.com/document/d/1_zihWXAwgTAdJc013-bOLUHPMrjeUBZnDuPkzMxEEj0/edit?usp=sharing –

ответ

2

Так что да, я могу подтвердить, что это правда.

Кроме того, я лично обсуждал это с одним из авторов POSA2 Дугом Шмидтом (моим доктором философии), чтобы быть на 100% уверенным (и дать вам больше уверенности). Он дал мне ссылку на видео, в котором он подробно обсуждает эту тему.

Это курс, который он преподает в Университете Вандербильта, в котором он охватывает передовые принципы работы (такие как параллелизм), который использует Android в качестве примера ОС/платформы.

http://www.youtube.com/watch?v=XZ29DAcmcLE

Кроме того, Эта тема была затронута в прошлом, и будет покрыта снова в расхождениях POSA курса на Coursera. Это также обсуждает программные паттерны и показывает их в Android Framework.

https://www.coursera.org/course/posa

+0

Благодарим за подтверждение. Мне нравятся лекции Дуга в Курсере. Они действительно очень информативны. Я также хотел бы воспользоваться этой возможностью, чтобы поблагодарить Дуга и Курсера за то, что они просвещали многих таких учеников, как я по всему миру ... –

Смежные вопросы