ユーザ用ツール

サイト用ツール


asynctaskメモ

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
asynctaskメモ [2015/09/16 20:00]
sou [スレッドプールオーバー対策]
asynctaskメモ [2015/12/11 13:43] (現在)
sou [パラレル実行時のスレッドプール]
ライン 18: ライン 18:
  
 ===== パラレル実行時のスレッドプール ===== ===== パラレル実行時のスレッドプール =====
 +下記のように設定されている模様。\\
 並列多重度:​ 5 (CORE_POOL_SIZE)\\ 並列多重度:​ 5 (CORE_POOL_SIZE)\\
 最大プール数:​ 128 (MAXIMUM_POOL_SIZE)\\ 最大プール数:​ 128 (MAXIMUM_POOL_SIZE)\\
ライン 26: ライン 26:
 要求のキューイングが出来なかった場合は最大128までプールする。\\ 要求のキューイングが出来なかった場合は最大128までプールする。\\
 \\ \\
-===== スレッドプールオーバー対策 ===== 
 GridViewを高速スクロールした際などに、プール数が128を超えてしまい、\\ GridViewを高速スクロールした際などに、プール数が128を超えてしまい、\\
 RejectedExecutionExceptionがthrowされる\\ RejectedExecutionExceptionがthrowされる\\
  
 +===== Viewの参照を渡す場合はWeakReferenceを使用する =====
 +ViewがGCで破棄されるタイミングはActivityが破棄されるタイミングであるべきなので、\\
 +AsyncTaskがViewの参照を保持しないよう、WeakReferenceを使用する。
  
-  // 高速スクロールした際のスレッドプールオーバー対策 
-        boolean isPooled = false; 
-        do { 
-            try { 
-                new MyTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,​ Object); 
-                isFinish = true; 
-            } catch (RejectedExecutionException ree) { 
-                LogUtils.e("",​ "​RejectedExecutionException"​);​ 
-                try { 
-                    Thread.sleep(500);​ 
-                } catch (InterruptedException ie) { 
-                    ie.printStackTrace();​ 
-                } 
-            } 
-        } while ( ! isPooled ); 
  
asynctaskメモ.1442401225.txt.gz · 最終更新: 2015/09/16 20:00 by sou