ArrayList<Task> tasks = new ArrayList<>();
//fill tasks with tasks to execute
ExecutorService executor = Executors.newFixedThreadPool(processors);
for (Task t : tasks)
executor.execute(t);
executor.shutdown();
while (!executor.isTerminated()) {
//wait for tasks to be completed
}
所以这是我目前正在使用的通用代码。它可以工作,但是我不确定这是否是针对我的用例的多线程的最佳/最有效方法。我确实注意到上面的方法会导致BSOD,但我不确定这是否是这种特定的多线程方式导致的,或者这仅仅是我的计算机/多线程问题。
TLDR;多线程处理大量短期任务的最佳方法是什么?