2015-05-18 24 views

cevap

4

İşlemcinin sayısına bağlı olarak Threads sayısının seçilmesi, uygulamayı çalıştıran aygıtın donanımına dayalı olarak ölçeklendirildiği için oldukça iyi bir çözümdür. Buna iyi bir örnek AsyncTask arasında source code bulunabilir: Bunun en iyi uygulama çözüm dikkate alacağını

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); 

.

AsyncTaskhere kaynak kodunu, ThreadPoolExecutor'u nasıl kullandıkları hakkında daha iyi bir fikir edinmek için bakabilirsiniz.

İlgili konular