Node.js uses a single-threaded event loop model for asynchronous operations like API requests but can face performance degradation with CPU-bound tasks.
To handle CPU-bound tasks efficiently, Node.js provides Worker Threads and child processes for multithreaded or parallel execution.
Node.js developers can use worker_threads module for parallel execution introduced in Node.js v10.5.0, offering the ability to run JavaScript in multiple threads.
Node.js also utilizes a thread pool via libuv for asynchronous I/O operations, providing developers more control over performance with tools like worker_threads and child processes.