当前位置:首页 > JavaScript

js实现多线程

2026-04-04 05:20:05JavaScript

JavaScript 多线程的实现方法

JavaScript 本身是单线程的,但可以通过 Web Workers、SharedArrayBuffer 等技术实现类似多线程的效果。以下是常见的实现方式:

Web Workers

Web Workers 允许在后台线程中运行脚本,与主线程并行执行。主线程和 Worker 线程通过消息传递通信。

创建 Worker 线程

// 主线程
const worker = new Worker('worker.js');
worker.postMessage('Hello Worker');

worker.onmessage = function(e) {
  console.log('Message from Worker:', e.data);
};

worker.js

self.onmessage = function(e) {
  console.log('Message from Main:', e.data);
  self.postMessage('Hello Main');
};

SharedArrayBuffer

SharedArrayBuffer 允许多个 Worker 共享同一块内存,实现真正的数据共享。

js实现多线程

使用示例

// 主线程
const sharedBuffer = new SharedArrayBuffer(1024);
const worker1 = new Worker('worker1.js');
const worker2 = new Worker('worker2.js');

worker1.postMessage({ buffer: sharedBuffer });
worker2.postMessage({ buffer: sharedBuffer });

worker1.js

self.onmessage = function(e) {
  const sharedArray = new Uint8Array(e.data.buffer);
  Atomics.add(sharedArray, 0, 1); // 原子操作
};

Service Workers

Service Workers 是特殊的 Web Worker,主要用于拦截和处理网络请求,实现离线缓存等功能。

js实现多线程

注册 Service Worker

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js')
    .then(registration => {
      console.log('ServiceWorker registration successful');
    });
}

注意事项

Web Workers 无法直接操作 DOM,需要通过 postMessage 与主线程通信。

SharedArrayBuffer 存在安全限制,需要服务器设置特定的 HTTP 头部才能使用。

Service Workers 只能在 HTTPS 或 localhost 环境下工作。

标签: 多线程js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…