浏览器中那个线程是主线程,是怎样切换线程的?

JavaScript的单线程特点,业内一直有个这样的原则:任何动作都不要长时间霸占主线程,如果迟迟不归还主线程,那么在这期间浏览器就没法对其他输入作出响应

浏览器内部有多个线程(事件处理,定时器等等),其中js执行线程和ui渲染线程互斥,针对上面的一段话,那么浏览器一个进程内是不是那个线程执行就是那个主线程,但是js事件循环模拟异步过程中,其他线程也参与进来,是和js线程并行(除了ui渲染线程),那谁是主线程。
js执行一个同步耗时任务会霸占主线程,任务执行完毕,释放主线程,交给ui线程渲染(变成主线程),能否这样理解?

阅读 2.3k
1 个回答

主线程一般就指 UI 线程。这点跟 Native 客户端开发(Windows、Linux、iOS、Android 啥都行)是一样的。

JS 执行时不是“霸占”主线程,而是“挂起”主线程,如果时间过长,看上去就是页面卡死了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题