当我们使用Java的Executor服务创建一个线程池并向这个线程池提交线程时,这些线程的执行顺序是什么?Java线程池ExecutorService:线程执行顺序
我想确保线程先提交,先执行。 例如,在下面的代码,我想先5个线程会首先执行,然后是下一个5个线程等等...
// Create a thread pool of 5 threads.
ScheduledExecutorService exService = Executors.newScheduledThreadPool(5, new ModifiedThreadFactory("ReadThreadPool"));
// Create 100 threads.
MyThread[] threads = createMyThreads(100);
// Submit these 100 threads to thread pool for execution.
for(MyThread thread : threads) {
exService.submit(thread);
}
确实Java的线程池用于这一目的提供任何API,或我们是否需要在我们的末端实现一个FIFO队列来实现这一点。 如果Java的线程池不提供任何这样的功能,我真的有兴趣了解这个功能不存在的原因,因为它看起来像是一个非常常见的用例。 技术上不可能(我认为这不太可能),还是仅仅是一个小姐?
哥们这是写在该类 –
的Javadoc,我希望那些'MyThread'对象只是名不副实,并没有真正延伸' java.lang.Thread'。他们应该是'Runnable'任务。执行者会给他们一个线程来执行。 ('Thread'实现'Runnable'这个事实是一个历史性的错误。) – Boann