An ExecutorService separates submitting tasks from deciding which threads run them. You create one with factory methods in Executors: newSingleThreadExecutor() runs tasks one at a time in order, newFixedThreadPool(n) uses n reusable threads, newCachedThreadPool() grows and shrinks as needed, newScheduledThreadPool(n) runs tasks after a delay or periodically, and newVirtualThreadPerTaskExecutor() uses a new virtual thread per task.
Keep reading for free
Create a free StudyToCert account to read the rest of this lesson: 5 more sections, 5 key terms, a real-world example, an exam tip and self-check questions. Every lesson, lab and practice test is free with an account.