Oracle定义了newFixedThreadPool(1)方法,如下所示,
创建一个重用固定数量的线程的线程池 关闭共享的无界队列
我可以设置固定的队列大小,例如1,这样我就可以阻止正在处理的新任务,直到当前任务执行完成,甚至使用堆栈而不是队列,当及时工作时,一段时间后第一个任务可能无效因此可能需要固定大小的堆栈。
答案 0 :(得分:1)
你做不到。 Executors
提供了一些常用的静态工厂方法,如
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
但如果这不是您所需要的,请自行制作ThreadPoolExecutor
。 E.g。
public static ExecutorService newFixedThreadPoolWithBoundQueue(
int nThreads,
int capacity) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(capacity));
}
甚至使用堆栈而不是队列
我不会那样试试。