JS实现多线程--Concurrent.Thread.js

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
concurrent.thread.js是一个用于 JavaScript 的库,它提供了一种并发执行函数的方式。通过该库,我们可以在 JavaScript 中使用多线程,从而提高程序的运行效率和性能。 这个库的核心思想是将需要并发执行的任务分配给多个线程,从而使得它们可以同时执行,而不是依次执行。这种并发执行的方式可以显著减少程序的执行时间,并提高响应速度。 使用concurrent.thread.js,我们可以创建多个线程,并将需要执行的函数分配给每个线程。每个线程在独立的执行环境中运行,它们可以同时执行不同的任务。这种方式使得我们能够充分利用多核处理器的并行能力,提高程序的处理能力。 同时,concurrent.thread.js还提供了一些方便的方法和工具,以便更好地管理线程的执行。例如,它可以用于监控线程的进度和状态,还可以用于处理线程之间的通信和同步等问题。 需要注意的是,由于JavaScript是单线程的语言,在使用concurrent.thread.js时,并发执行函数并不会真正地创建多个物理线程。相反,它是通过利用浏览器或Node.js环境中的事件循环机制,将任务分配给不同的线程,从而实现并发执行的效果。 总之,concurrent.thread.js是一个非常有用的库,它提供了一种在JavaScript实现并发执行函数的方式。通过利用多线程的并行能力,我们可以以更高效并且更快速的方式处理大量的任务,并提高程序的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值