Thread pools in Operating Systems - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When using thread pools, it is important to understand how the time to complete tasks changes as the number of tasks grows.
We want to know how the total work time scales when many tasks are handled by a fixed number of threads.
Analyze the time complexity of the following thread pool task execution.
ThreadPool pool = new ThreadPool(4); // 4 worker threads
for (int i = 0; i < n; i++) {
pool.submit(() -> {
performTask(); // each task takes constant time
});
}
pool.waitForAllTasks();
This code submits n tasks to a thread pool with 4 threads, each task taking the same fixed time.
Look for repeated actions that affect total time.
- Primary operation: Executing each of the n tasks.
- How many times: Each task runs once, total n tasks.
- The thread pool runs up to 4 tasks at the same time, but all n tasks must complete.
As the number of tasks n increases, total work grows linearly because each task takes constant time.
| Input Size (n) | Approx. Operations (task executions) |
|---|---|
| 10 | 10 tasks executed |
| 100 | 100 tasks executed |
| 1000 | 1000 tasks executed |
Pattern observation: Doubling the number of tasks roughly doubles the total work time, even with parallel threads.
Time Complexity: O(n)
This means the total time grows directly in proportion to the number of tasks, despite running some in parallel.
[X] Wrong: "Using a thread pool with multiple threads makes the total time constant regardless of tasks."
[OK] Correct: Even with multiple threads, all tasks must run, so total time still grows with the number of tasks, just faster than one thread.
Understanding how thread pools affect time helps you explain real-world program performance and shows you can reason about parallel work efficiently.
What if the thread pool size increased with the number of tasks? How would the time complexity change?
Practice
thread pool in an operating system?Solution
Step 1: Understand thread pool concept
A thread pool manages a fixed number of threads to handle many tasks efficiently without creating new threads each time.Step 2: Compare options with thread pool purpose
Only To reuse a fixed number of threads to run multiple tasks efficiently correctly describes reusing threads for multiple tasks. Other options describe unrelated concepts.Final Answer:
To reuse a fixed number of threads to run multiple tasks efficiently -> Option CQuick Check:
Thread pool purpose = reuse threads [OK]
- Thinking thread pools create unlimited threads
- Confusing thread pools with memory management
- Assuming thread pools store data permanently
Solution
Step 1: Recall thread pool task management
When all threads are busy, new tasks wait in a queue until a thread becomes free.Step 2: Evaluate options against this behavior
Tasks wait in a queue if all threads are busy correctly states tasks wait in a queue. Other options are incorrect because tasks are not discarded or run sequentially only.Final Answer:
Tasks wait in a queue if all threads are busy -> Option DQuick Check:
Task queueing = waiting tasks [OK]
- Believing tasks run immediately always
- Thinking tasks get dropped if no thread is free
- Assuming tasks run strictly one by one
Solution
Step 1: Understand thread pool capacity
The thread pool has 3 threads, so it can run up to 3 tasks at the same time.Step 2: Analyze task submission
When 5 tasks are submitted, 3 run immediately (one per thread), and 2 wait in the queue.Final Answer:
3 -> Option AQuick Check:
Threads limit running tasks = 3 [OK]
- Assuming all tasks run simultaneously regardless of thread count
- Confusing queued tasks with running tasks
- Thinking no tasks run if more than threads
Solution
Step 1: Analyze thread pool size effect
If the thread pool size is zero, no threads exist to run tasks, so tasks remain queued forever.Step 2: Evaluate other options
Tasks being short or queue empty do not cause indefinite waiting. CPU overload may slow but not block all tasks.Final Answer:
The thread pool size is set to zero -> Option AQuick Check:
Zero threads means no task execution [OK]
- Assuming short tasks cause waiting
- Thinking empty queue causes waiting
- Blaming CPU overload for all tasks stuck
Solution
Step 1: Consider resource limits
Creating 100 threads can exhaust system resources and reduce performance.Step 2: Evaluate thread pool with queuing
A fixed smaller thread pool (like 10 threads) efficiently reuses threads and queues extra requests, balancing load and resources.Step 3: Reject other options
Creating new threads per request wastes resources; single thread causes slow sequential handling.Final Answer:
Create a thread pool with a fixed smaller number of threads (e.g., 10) and queue extra requests -> Option BQuick Check:
Fixed small pool + queue = balanced performance [OK]
- Making thread pool size equal to requests
- Creating new thread per request wastes resources
- Using single thread causes slow processing
