如何在不使用ExecutorService的情况下实现固定线程池

时间:2014-07-10 12:29:59

标签: java multithreading executorservice

我有像这样的代码块

   static ExecutorService executor = Executors.newFixedThreadPool(4);
   Runnable worker = new CsvToJavaObject(newFilePath);
   executor.execute(worker);

我想将线程数限制为n(4)而不使用Executor Service。我该怎么做?

3 个答案:

答案 0 :(得分:1)

ThreadPoolExecutor怎么样?

ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 5, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());

答案 1 :(得分:0)

“4”是核心的数量吗?您是否尝试将并行执行限制为系统中的核心数量? 如果是这样的话:我只会使用TPL(例如“新任务(动作)”),这已经尊重了你的系统设置。 如果你愿意,你甚至可以手动设置线程池提供的线程数,请参阅ThreadPool.SetMinThreads,但只有少数几种情况可以理解......

编辑:我的错误,认为这是一个c#问题......

答案 2 :(得分:0)

如果您只想根据需要生成任务,您实际上想要修改BlockingQueue。

当线程池有一个空闲线程时,它会对队列执行阻塞take()。您修改的队列可以按需创建任务。