JS实现多线程--Concurrent.Thread.js
JS实现多线程--Concurrent.Thread.js
- 前言
- Concurrent.Thread.js
前言
js是单线程语言,但前端的某些任务是非常耗时的,如果让它们老老实实的排队等待执行的话,执行效率会非常的低,甚至导致页面的假死。
单线程就如同只有一个档口,上面的烦恼,我们通常会这样去处理,先让赶时间且需求小的人优先。这时我们可以使用setTimeout,跟需求量超大,又不着急的人约个时间,让他晚些再来。
诸如setTimeout等方式,确实可以帮我们解决眼瞎麻烦。但也不能尽善尽美,诸如上面的烦恼,与【客人A】约的时间,短了 可能来的时候【客人E】还未完成。长了难免造成时间的浪费。(此处其实可以用异步、回调解决。异步和回调此处不做详细说明,因为我也不会。)
Concurrent.Thread.js
对于我这种新手而言,单线程的JS要完成某些事件的先后处理确实是很大的烦恼。于是在网上找啊找,找到了关于Concurrent.Thread的介绍
https://www.cnblogs.com/woodk/articles/5199536.html
Concurrent.Thread.js来源于一个日本人,谁谁谁我不知道。用来让javascript也进行多线程开发的包,可以让我们将耗时的任务利用前端来模拟多线程。
操作起来也很简单很容易理解
Concurrent.Thread.create()即是开了一个线程;
下面是一个简单的例子:
<meta charset="utf-8" />
<script src="Concurrent.Thread.js"></script>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script><div id="test">hellow word!
</div>
<script>console.log( getNowFormatDate() + "正常程序开头");var a = 0;Concurrent.Thread.create(function(){console.log(getNowFormatDate() + "线程1开始");while(true){//console.log(a);if(a > 99999){break;}}console.log(getNowFormatDate() + "线程1结束");});Concurrent.Thread.create(function(){console.log(getNowFormatDate() + "线程2开始");for(var i = 0;i < 1000000;i++){a += 1;}console.log(getNowFormatDate() + "线程2结束");});console.log(getNowFormatDate() + "正常程序结尾");function getNowFormatDate() {var date = new Date();var seperator1 = "-";var seperator2 = ":";var month = date.getMonth() + 1;var strDate = date.getDate();if (month >= 1 && month <= 9) {month = "0" + month;}if (strDate >= 0 && strDate <= 9) {strDate = "0" + strDate;}var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate+ " " + date.getHours() + seperator2 + date.getMinutes()+ seperator2 + date.getSeconds();return currentdate;}
</script>
若按照单线程的理解,程序先后顺序会是
正常程序开头线程1开始线程2开始线程1结束线程2结束
正常程序结尾
但实际的顺序则是多线程的结果
正常程序开头
正常程序结尾线程1开始线程2开始线程1结束线程2结束
附加下载地址
https://download.csdn.net/download/sinat_37958531/10940562
JS实现多线程--Concurrent.Thread.js相关推荐
- C++多线程:thread类创建线程的多种方式
文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...
- 【深入浅出Node.js系列十一】Node.js开发框架Express4.x
为什么80%的码农都做不了架构师?>>> #0 系列目录# 深入浅出Node.js系列 [深入浅出Node.js系列一]什么是Node.js [深入浅出Node.js系列二]N ...
- node.js入门系列(一)--Node.js简介
什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...
- 第一章:前端视角——js运行环境之node.js基础入门
1.为什么使用node.js 大部分情况下,我们写的js代码都是直接运行在浏览器中,由浏览器进行执行与渲染.但是随着前端工程化的发展,我们写的js代码越来越复杂,所以对我们的代码进行预处理已成为了必要 ...
- Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM
本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...
- tween.js 用户指南 - 与 Three.js 配合使用的补间动画库
tween.js 用户指南 - 与 Three.js 配合使用的补间动画库 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途- ...
- java 执行js脚本_java中调用js脚本
JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...
- Node.js 是什么?Node.js与JavaScript的区别是什么?
node.js是什么?Node.js是一个Javascript运行环境(runtime).Node.js与JavaScript的区别是什么?本质: Javascript是一种web前端语言,主 ...
- Node.js简介——为什么要学习node.js
目录 什么是node.js 为什么要学习node.js node.js特点 什么是node.js Node.js简称Node,是一个可以使JavaScript运行在服务器端的开发平台. (1)Node ...
最新文章
- 分布式系统——zabbix监控tomcat
- 070901css基础知识
- 是什么造就了伟大的程序员?
- python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
- HDU - 6464 免费送气球(线段树二分)
- Google游览器快捷键学习
- linux halt 命令详解
- 经典排序算法(十)--希尔排序Shell Sort
- Linq to Sql 聚合查询
- 使用PS排版制作一寸照片
- Java开发面试简历这么写,命中率达70%
- 做跨境电商的Anker的也回来“内卷”了?
- 花盆Flowerpot[USACO12MAR]
- js 日期增加加天数计算
- 《Arduino实验》实验二:DHT11温湿度传感器检测当前环境温湿度
- ​2021半年盘点,不想你错过的重磅新书
- 为什么专业领域里外行领导能让墙倒屋塌?
- 学习笔记:C语言程序设计
- 在Twitch,YouTube和其他地方流式传输游戏的最佳方法
- CompileFlow 基本组件--第二节