Advanced Node.js Interview QuestionsAdvancedPractical
Node.js · Question 69
How do worker threads work in Node.js?
Direct answer
worker_threads spawn isolated V8 isolates with message passing via postMessage and SharedArrayBuffer for shared memory — import worker from worker file path, listen for message/error/exit, terminate when done.
Worker threads run JavaScript in parallel without blocking the main event loop — each worker has its own event loop but shares process resources more lightly than cluster forks.
- new Worker('./task.js') — worker file or eval string with workerData option.
- postMessage / parentPort — structured clone transfer; Transferable for ArrayBuffer.
- SharedArrayBuffer — low-latency shared memory; requires careful synchronization.
- Pool pattern — reuse workers for repeated jobs; avoid spawn cost per request.
worker-thread.mjs
import { Worker } from "node:worker_threads";
function runWorker(data) {
return new Promise((resolve, reject) => {
const worker = new Worker("./hash-worker.mjs", { workerData: data });
worker.on("message", resolve);
worker.on("error", reject);
worker.on("exit", (code) => {
if (code !== 0) reject(new Error(`Worker stopped with ${code}`));
});
});
}
// hash-worker.mjs: parentPort.postMessage(hashResult)