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相关推荐

  1. C++多线程:thread类创建线程的多种方式

    文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...

  2. 【深入浅出Node.js系列十一】Node.js开发框架Express4.x

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出Node.js系列 [深入浅出Node.js系列一]什么是Node.js [深入浅出Node.js系列二]N ...

  3. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  4. 第一章:前端视角——js运行环境之node.js基础入门

    1.为什么使用node.js 大部分情况下,我们写的js代码都是直接运行在浏览器中,由浏览器进行执行与渲染.但是随着前端工程化的发展,我们写的js代码越来越复杂,所以对我们的代码进行预处理已成为了必要 ...

  5. Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM

    本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...

  6. tween.js 用户指南 - 与 Three.js 配合使用的补间动画库

    tween.js 用户指南 - 与 Three.js 配合使用的补间动画库 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途- ...

  7. java 执行js脚本_java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

  8. Node.js 是什么?Node.js与JavaScript的区别是什么?

    node.js是什么?Node.js是一个Javascript运行环境(runtime).Node.js与JavaScript的区别是什么?本质:     Javascript是一种web前端语言,主 ...

  9. Node.js简介——为什么要学习node.js

    目录 什么是node.js 为什么要学习node.js node.js特点 什么是node.js Node.js简称Node,是一个可以使JavaScript运行在服务器端的开发平台. (1)Node ...

最新文章

  1. 分布式系统——zabbix监控tomcat
  2. 070901css基础知识
  3. 是什么造就了伟大的程序员?
  4. python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
  5. HDU - 6464 免费送气球(线段树二分)
  6. Google游览器快捷键学习
  7. linux halt 命令详解
  8. 经典排序算法(十)--希尔排序Shell Sort
  9. Linq to Sql 聚合查询
  10. 使用PS排版制作一寸照片
  11. Java开发面试简历这么写,命中率达70%
  12. 做跨境电商的Anker的也回来“内卷”了?
  13. 花盆Flowerpot[USACO12MAR]
  14. js 日期增加加天数计算
  15. 《Arduino实验》实验二:DHT11温湿度传感器检测当前环境温湿度
  16. ​2021半年盘点,不想你错过的重磅新书
  17. 为什么专业领域里外行领导能让墙倒屋塌?
  18. 学习笔记:C语言程序设计
  19. 在Twitch,YouTube和其他地方流式传输游戏的最佳方法
  20. CompileFlow 基本组件--第二节

热门文章

  1. OA系统请假,出差等流程审批解析
  2. js 获取字符串长度方法length
  3. 注意力机制的直观理解
  4. OpenGL学习笔记(十五)
  5. C - Social Distance CodeForces - 1367C
  6. 【性能测试】轻量级压测工具Hey
  7. 统计学第一篇,均值、中位数、众数
  8. SSD固态硬盘优化方案,让新买的SSD速度不再慢
  9. 鸿蒙系统入门开发(入门篇)
  10. Linux流量监控工具 - iftop (最全面的iftop教程),查看服务器的网络情况