作者:empty 页数:153 出版社:empty |
在本书发布时,社区共五位活跃成员,均参与了本书的撰写及审校工作,他们的代号分别是{排名按拼音排序,不分先后):灵码,毛毛虫,潘柏斯雄鹰,萤火虫,啄木鸟。活跃
Red Spider是一个非常活跃的技术社区, 虽然现在成员人数不多, 但是对于社区的各种活动都非常积极和活跃。目前社区内部大多都是Java开发工程师, 且都对技术始终保持极高的热情。Red Spider是一个自我驱动的技术学习社区, 社区内部拥有非常丰富的活动形式,比如一起开技术沙龙、一起写博客、一起写书、一起写代码。除了与技术相关的活动以外,我们还会偶尔线下聚餐和一起出去运动。虽然有一位成员不在成都,但仍然会*云参与*到我们的每次线下活动.敏捷Red Spider技术社区是一个敏捷的技术社区, 我们通过一些敏捷流程和工具来管理社区的目标和进程。比如在写这本书的时候, 我们使用了国内的Team bii n软件来追踪每篇文章的初稿和修订状态。我们每两周一个迭代,我们会在迭代开始时安排下个迭代要做的事情,在迭代结束的时候开迭代会议(Retr) 总结这个迭代。我们使用Git来管理整个书籍的编写工作, 托管到Git Hub上,到目前为止总共有两百多次提交记录,地址:hltps://github.cm/RedSpider1/cncurrent.开源与分享经社区成员一致决定, 本书将发布到Gt Bk。一方面是觉得出版纸质书比较麻烦, 要联系出版商以及排版成Wrd, 另一方面, 也算是想免费向大众分享Red Spider社区几个月以来的成果, 开源本书也算是社区对中国Java开发者做出一点力所能及的贡献。新的起点虽然本书已经写完第一次发布,但我们社区的步伐并没有结束。未来还会有更多的技术活动及产出,我们希望能够吸收更多志同道合的朋友,如果您有兴趣加入我们, 欢迎加入我们的交流群, 并发送简历到Red Spider社区邮件组redspider@qun.mail,163.cm,我们将在收到简历后联系你,加入我们,你可以获得:1进程与线程基本概念1沿程与线程基本椒·持续学习新技术,培养自己的技术广度和深度;,参与社区活动(比如沙龙、写博客、写书等),增强个人影响力;·参与开源项目,获得开源项目经验;·社区成员的内推资源;我们希望你符合以下条件:。对技术有极高的热情,且自主学习能力强;·合作沟通能力强;·有一定的技术基础,不能一问三不知,最好是有一两年工作经验以上;·时间上比较充裕,加班少的忧先,因为社区有很多活动,希望能够活跃参与:·成都市的优先,能够参与社区的线下活动。Red Spider技术社区处于一个新的起点, 期待你的加入,交流群社区创建了微信群,欢迎广大读者及对技术感兴趣的朋友加入交流群:请先加微信号:red spider-wrker, 备注 Red Spider技术社区交流群申请 , 我们会思快通过并拉你进群哦。
·作者介绍灵鹤本书由五位作者(均为Red Spider社区成员) 共同撰写, 他们均参与了初稿编写,下面分别是五位作者的简介(以拼音排序):招银网络科技高级开发工程师,拥有国外大型企业高并发项目经验,熟悉敏捷流程开发及持续集成,热爱开源,喜欢分享,对于写作始终保持严谨的态度。高级Java开发工程师, 长期工作在华为一线, 专注Java技术体系, 熟悉微服务及大数据领域。拥有大数据项目开发经验和运维经验、丰富的企业级项目开发经验。热爱开源, 乐于分享。目前专注于微服务, JVM, 大数据生态系统。阿里巴巴高级Java开发工程师, 长期位于Java开发一线, 拥有丰富的大型企业级项目开发经验, 熟敏捷开发流程。热衷于探索未知, 目前专注于Java高并发,阿里巴巴高级Java开发工程师, 熟悉微服务及Dev ps领域, 拥有大型国际高井发项目的开发经验和运维经验。对新技术有强烈的好奇心,热爱钻研技术深度,自我驱动能力和学习能力较强,熟悉敏捷实践。热爱开源和分享,具有丰富的演讲经验Java高级开发工程师, 拥有国内外分布式架构高并发项目开发经验, 主要从事微服务架构下API设计与开发, 对于敏捷实践与持续集成/交付有丰富经验。拥抱开源,善于钻研技术难点。热爱与人沟通,有丰富的培训团队和新人经验。:毛毛虫。潘帕斯鹰萤火虫啄木鸟作者介绍文章修订等工作。灵鹤毛毛虫潘帕斯雄鹰JVM.萤火虫和写作经验。啄木鸟
本书简介笔者在读完市面上关于Java并发编程的资料后, 感觉有些知识点不是很清晰, 于是在Red Spider社区内展开了对Java并发编程原理的讨论, 鉴于开源精神, 我们决定将我们讨论之后的Java井发编程原理整理成书籍, 分享给大家。站在巨人的肩上,我们可以看得更远。本书内容的主要来源有博客、书籍、论文,对于一些已经叙述得很清晰的知识点我们直接引用在本书中;对于一些没有讲解清楚的知识点, 我们加以画图或者编写Dem进行加工; 而对于一些模梗两可的知识点,本书在查阅了大量资料的情况下,给出最合理的解释。写本书的过程也是对自己研究和掌握的技术点进行整理的过程,希望本书能帮助读者快速掌握并发编程技术。如果您或者您的单位愿意赞助本书或本社区, 请发送邮件到Red Spider社区邮件组redspiden@qun.mail,163.cm或加微信red spider-wrker进行洽谈。勘误和支持由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方, 请读者批评指正。如果你有更多的宝贵意见, 可以在我们的gi hub上新建issue, 笔者会尽快解答, 期待能够得到你的真挚反馈。git hub地址:htips://github.cm/RedSpider1icncurrent·第一章进程与线程的基本概念第一章进程与线程的基本概念最初的计算机只能接受一些特定的指令,用户每输入一个指令,计算机就做出一个操作。当用户在思考或者输入时,计算机就在等待。这样效率非常低下,在很多时后来有了批处理操作系统,把一系列需要操作的指令写下来,形成一个清单,一次性交给计算机。用户将多个需要执行的程序写在磁带上,然后交由计算机去读取并逐个执行这些程序,并将输出结果写在另一个磁带上。批处理操作系统在一定程度上提高了计算机的效率,但是由于批处理操作系统的指令运行方式仍然是串行的,内存中始终只有一个程序在运行,后面的程序需要等待前面的程序执行完成后才能开始执行,而前面的程序有时会由于I/操作、网络等人们对于计算机的性能要求越来越高,现有的批处理操作系统并不能满足人们的需求,而扯处理操作系统的瓶颈在于内存中只存在一个程序,那么内存中能不能存在进程就是应用程序在内存中分配的空间,也就是正在运行的程序,各个进程之间互不干扰。同时进程保存着程序每一个时刻运行的状态。程序:用某种编程语言(java、pythn等) 编写, 能够完成一定任务或者功能的代码集合,是指令和数据的有序集合,是一段静态代码此时, CPU采用时间片轮转的方式运行进程:CPU为每个进程分配一个时间段, 称作它的时间片。如果在时间片结束时进程还在运行,则暂停这个进程的运行,并且CPU分配给另一个进程{这个过程叫做上下文切换) .如果进程在时间片结束前阻塞或结束, 则CPU立即进行切换, 不用等待时间片用完。当进程暂停时,它会保存当前进程的状态(进程标识,进程使用的资源等),在下一次切换回来时根据之前保存的状态进行恢复,接着继续执行。使用进程+CPU时间片轮转方式的操作系统, 在宏观上看起来同一时间段执行多个任务,换句话说,进程让操作系统的并发成为了可能。虽然并发从宏观上看有多个任务在执行, 但在事实上, 对于单核CPU来说, 任意具体时刻都只有一个任务在占。1.1进程产生的背景。1.2上下文切换1.1进程产生的背景候,计算机都处在等待状态。批处理操作系统原因阻塞,所以批处理操作效率也不高。进程的提出多个程序呢?这是人们虽待解决的问题。于是,科学家们提出了进程的概念。用CPU资源。对操作系统的要求进一步提高