作者:禅与计算机程序设计艺术
1.简介
16年刚刚过去,是Java在这方面最活跃的一段时间,Node.js也逐渐被越来越多的人熟知,协程的概念也已经成为热门话题。这两者都是多线程编程模型中的一种变体,都是为了解决传统单线程模型中存在的并发性问题而提出的方案。但由于两个模型都面临着一些缺陷(比如Java不支持跨平台、Node.js运行环境更复杂),因此又产生了一些新的协程库或语言。本文将详细介绍Java和Node.js两种语言中基于事件驱动模型的多线程和协程化改进方案。
为什么要进行协程化改进?
在当前多核CPU时代,服务器的计算能力显著提升,相对于单线程、多进程等传统的多任务处理方式,协程可以提供更好的利用率和性能。但由于传统的多线程模型仍然是程序员最容易理解和使用的模型,因此很多开发者习惯于依照这个模型进行程序设计。对于有一定编程经验的程序员来说,切换到协程就像换了一个视角看待问题一样,能够极大地提高编程效率,降低开发难度。因此,协程化改进对开发人员来说意义重大。
技术含量较高
本文的主要研究对象是基于事件驱动模型的多线程和协程化改进,涉及的内容包括:异步IO、回调函数、事件循环、协程调度、协程状态、协程和并行编程等。对于新手阅读可能会比较吃力,但不会影响读者对协程技术的了解。
作者信息
天哥,阿里巴巴集团技术专家、资深软件工程师,现任职于某世界500强企业负责架构设计和研发工作。他之前曾担任国内一家游戏公司的CTO,负责游戏引擎的研发;曾任某财经网站的首席架构师,负责公司业务架构和后台系统的设计和开发。他拥有丰富的计算机基础知识、项目管理经验以及敏锐的