Voglio leggere più file dalla sdcard in parallelo con uno ThreadPoolExecutor
. Qual è il modo migliore per scegliere il numero di Threads
? Va bene scegliere la dimensione in base al numero di processori disponibili?Come scegliere la dimensione del pool di thread su Android
5
A
risposta
4
Scegliere il numero di Threads
in base al numero di processori è una soluzione piuttosto buona perché si adatta in base all'hardware del dispositivo su cui è in esecuzione l'app. Un buon esempio di questo può essere trovato nel source code di AsyncTask
:
private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
private static final int CORE_POOL_SIZE = CPU_COUNT + 1;
private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;
private static final int KEEP_ALIVE = 1;
private static final ThreadFactory sThreadFactory = new ThreadFactory() {
private final AtomicInteger mCount = new AtomicInteger(1);
public Thread newThread(Runnable r) {
return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
}
};
private static final BlockingQueue<Runnable> sPoolWorkQueue =
new LinkedBlockingQueue<Runnable>(128);
public static final Executor THREAD_POOL_EXECUTOR
= new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);
Secondo me è una la migliore soluzione pratica.
È possibile guardare il codice sorgente di AsyncTask
here se si desidera una migliore idea di come utilizzare lo ThreadPoolExecutor
.
Problemi correlati
- 1. Impostazione dimensione ideale del pool di thread
- 2. Ottimizzazione dimensione del pool di thread
- 3. Come aumentare ActiveRecord dimensioni del pool di thread su Heroku
- 4. Come ottenere l'ID del thread da un pool di thread?
- 5. Qual è la dimensione predefinita del pool GPars?
- 6. Come aumentare la dimensione massima del pool in ActiveRecord?
- 7. Pool di thread C++
- 8. Gestione del pool di thread attività "duplicate"
- 9. Sistema attore non responsivo: Il dispatcher ThreadPoolExecutor crea solo pool di thread core, apparentemente ignora la dimensione massima del pool di thread
- 10. qual è la differenza tra pool di thread di Windows e pool di thread CLR
- 11. Come scegliere diverse architetture Android?
- 12. Pool di thread in Java
- 13. InheritableThreadLocal e pool di thread
- 14. Android: Come cambiare la dimensione del RadioButton
- 15. Limite thread su Android?
- 16. Ruby 1.9 pool di thread
- 17. La continuazione dell'attività non era pianificata sul thread del pool di thread
- 18. 500 thread di lavoro, che tipo di pool di thread?
- 19. Dimensione massima del pool di connessioni in SQL Server 2008
- 20. Dimensione del pool di connessioni nodo-mongodb nativo
- 21. Pensare dietro la decisione della dimensione del pool di connessione del database
- 22. C#, webcam Emgu - scegliere la dimensione di cattura
- 23. Con ThreadPoolExecutor, come ottenere il nome del thread in esecuzione nel pool di thread?
- 24. Dopo l'avvio di FileSystemWatcher - Thread Pool o thread dedicato?
- 25. pool di thread, dati condivisi, Java Sincronizzazione
- 26. Gestione pool di thread agente in Clojure
- 27. Pool di thread e thread locali in cache Java
- 28. Qt su Android, riducendo la dimensione binaria
- 29. Pool di thread C# "Fixed"/"Load Balanced"?
- 30. Android ridurre la dimensione del Immagine fotocamera