js 实现线程
在JavaScript中实现类似线程的功能可以通过以下几种方式实现,具体取决于运行环境(浏览器或Node.js)和需求。以下是常见方法:
Web Workers(浏览器环境)
Web Workers允许在后台线程中运行脚本,避免阻塞主线程。创建一个worker.js文件:
// worker.js
self.onmessage = function(e) {
const result = e.data * 2;
postMessage(result);
};
在主线程中调用:

const worker = new Worker('worker.js');
worker.onmessage = function(e) {
console.log('Result:', e.data);
};
worker.postMessage(5); // 发送数据
Worker Threads(Node.js环境)
Node.js通过worker_threads模块支持多线程。示例代码:
const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', (msg) => console.log(msg));
} else {
parentPort.postMessage('Hello from worker');
}
定时器模拟并发
通过setTimeout或setInterval模拟异步操作:

function task1() {
setTimeout(() => console.log('Task 1'), 1000);
}
function task2() {
setTimeout(() => console.log('Task 2'), 500);
}
task1();
task2();
Promise与async/await
利用异步编程模型实现非阻塞操作:
async function fetchData() {
const response = await fetch('api/data');
const data = await response.json();
return data;
}
fetchData().then(data => console.log(data));
SharedArrayBuffer与Atomics(高级用法)
用于线程间共享内存(需注意线程安全):
const sharedBuffer = new SharedArrayBuffer(16);
const sharedArray = new Int32Array(sharedBuffer);
// 在Worker中可通过Atomics操作共享内存
注意事项:
- 浏览器中Web Workers无法直接操作DOM
- Node.js的Worker Threads适合CPU密集型任务
- 线程间通信需要通过消息传递或共享内存实现






