我正在阅读高效的Android线程。 它说,
使用零核心线程和一个可以容纳10个任务的有界队列,在插入第11个任务之前,没有任务实际运行,从而触发创建线程。
但是当我尝试代码时,
int N = Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor executor = new ThreadPoolExecutor(
0,
N*2,
60L, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(10));
for(int i = 1 ; i <= 5 ; ++i) {
final int j = i;
executor.execute(new Runnable() {
@Override
public void run() {
Log.d("Debug", "Executed : " + j);
SystemClock.sleep(1000);
}
});
Log.d("Debug", "Queued : " + i);
}
即使队列中只有5个任务,任务也会正确执行。我错过了什么?