我想从sdcard中同时使用ThreadPoolExecutor
读取多个文件。选择Threads
的数量的最佳方法是什么?是否可以根据可用处理器的数量选择尺寸?
答案 0 :(得分:5)
根据处理器数量选择<select name="mod_simpleemailform_field1_1" id="mod_simpleemailform_field1_1"
class="mod_sef_input_select select">
<option value="">Day</option>
<?php
for($i = 1; $i <= 10; $i++) {
if($day == $i) {
echo '<option selected="selected">' . $i . '</option>';
} else {
echo '<option>' . $i . '</option>';
}
}
</select>
的数量是一个非常好的解决方案,因为它可以根据运行应用程序的设备的硬件进行扩展。可以在Threads
的{{3}}中找到一个很好的例子:
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);
,您可以查看AsyncTask
source code的源代码。