线程的案例题

Posted lily

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的案例题相关的知识,希望对你有一定的参考价值。

console.log(1);

setTimeout(function () {
	console.log(2);

	new Promise(function (resolve, reject) {
		console.log(3);
		resolve();
		console.log(4);
	}).then(function () {
		console.log(5);
	});
});

function fn() {
	console.log(6);
	setTimeout(function () {
		console.log(7);
	}, 50);
}

new Promise(function (resolve, reject) {
	console.log(8);
	resolve();
	console.log(9);
}).then(function () {
	console.log(10);
});

fn();

console.log(11);

// 以下代码需要在 node 环境中执行
process.nextTick(function () {
	console.log(12);
});

setImmediate(function () {
	console.log(13);
});

  

优先级

通过上面的介绍,我们就可以得出一个代码执行的优先级:

同步代码(宏任务) > process.nextTick > Promise(微任务)> setTimeout(fn)、setInterval(fn)(宏任务)> setImmediate(宏任务)> setTimeout(fn, time)、setInterval(fn, time),其中time>0

综上,最终的输出顺序是:1 8 9 6 11 12 10 2 3 4 5 13 7

详细的解说:http://www.laixiangran.cn/2018/04/16/JavaScript%E4%B9%8BEvent%20Loop/

以上是关于线程的案例题的主要内容,如果未能解决你的问题,请参考以下文章

Java进阶之光!2021必看-Java高级面试题总结

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!

多线程面试题系列(16):多线程十大经典案例之一 双线程读写队列数据

线程的案例题

线程高级应用-心得2-同步锁讲解及面试题案例分析

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段