本课程以 Java 8 为背景,向学员(行业专业人士和学生)讲授并发编程的基本概念。 并发编程使开发人员能够高效、正确地调解并行程序中共享资源的使用。 课程结束时,您将学会如何使用 Java 中的基本并发构造,如线程、锁、临界区段、原子变量、隔离、行为体、乐观并发和并发集合,以及它们的理论基础(如进度保证、死锁、活锁、饥饿、线性化)。 为什么要学习本课程? - 了解并发的理论基础对避免常见但微妙的编程错误非常重要。
了解顶级公司的员工如何掌握热门技能

积累特定领域的专业知识
- 向行业专家学习新概念
- 获得对主题或工具的基础理解
- 通过实践项目培养工作相关技能
- 获得可共享的职业证书

该课程共有7个模块
欢迎学习《Java 中的并发编程》!本课程设计为三部分系列,通过各种视频讲座、演示和编码项目涵盖一个主题或知识体系。
涵盖的内容
1个视频5篇阅读材料1个编程作业1个讨论话题
在本模块中,我们将学习线程和锁,50 多年来,它们一直是并发编程的基本构件。 如今,所有计算平台都包含对线程和锁的某种形式的支持,并允许开发人员使用各种编程语言。我们将学习如何使用 Java 中的结构化锁(如同步语句/方法)和非结构化锁(如 java.util.concurrent 库)创建、连接和同步线程。 我们还将了解并发程序需要访问共享资源时可能出现的新错误类别。 这些错误被称为违反活泼性/进度保证,包括死锁、活锁和饥饿。 在本模块的最后,我们将研究经典的 "餐饮哲学家 "问题的不同解决方案,并用这些解决方案来说明死锁、活锁和饥饿的实例。
涵盖的内容
6个视频6篇阅读材料1个作业1个编程作业
在本模块中,我们将学习不同的方法来协调对共享资源的访问,而不会遇到前面学习过的死锁或活锁错误。 临界/隔离段是更高级的并发编程结构(相对于锁而言),它通过保证不存在死锁和活锁简化了互斥的实现。 如 "生成树"(Spanning Tree)示例所示,基于对象的隔离允许在每个对象上指定互斥,从而放宽了临界部分施加的限制。 Java 的原子变量是基于对象的隔离的一个重要但受限制的例子,它可以在所有硬件平台上高效地实现。 最后,我们将学习如何通过读/写访问模式进一步放松基于对象的隔离。
涵盖的内容
6个视频6篇阅读材料1个作业1个编程作业
Vivek Sarkar 教授与软件工程师 Shams Imam 博士在德克萨斯州休斯顿市中心的办公室就线程、锁、死锁、高级和低级结构以及并发编程的重要性进行了讨论,欢迎加入 Vivek Sarkar 教授的谈话。
涵盖的内容
2个视频1篇阅读材料
在本模块中,我们将学习另一种高级并发编程方法,即 "Actor "模型。 Actor 模型与 Isolated Sections 模型的主要区别在于,Actor 模型不允许任何形式的共享变量,因此不可能出现数据竞赛。 然而,与所有并发编程模型一样,由于消息传递顺序的内在异步性,在 Actor 模型中仍有可能出现更高层次的非确定性。 我们将研究使用 Actor 模型的多个并发实例,包括生成素数的经典埃拉托塞尼斯筛算法,以及缓冲区无界和有界的生产者-消费者模式。
涵盖的内容
6个视频6篇阅读材料1个作业1个编程作业
在本模块中,我们将学习并发数据结构,它是所有多线程编程系统中必不可少的软件层。 首先,我们将学习乐观并发(Optimistic Concurrency),这是一种重要的多线程模式,在这种模式中,两个线程可以 "乐观地 "完成各自分配的工作,而不必担心相互冲突,只需在 "提交 "工作结果之前检查是否存在冲突。 然后,我们将研究广泛使用的并发队列数据结构。 尽管使用并发队列的 API 非常简单,但使用乐观并发模型实现并发队列可能会很复杂,而且容易出错。 为此,我们还将学习线性化的正式概念,以便更好地理解并发数据结构的正确性要求。 然后,我们将研究另一种广泛使用的并发数据结构--并发散列图。 最后,我们将讨论一种用于查找无向图最小生成树的并发算法,该算法依赖于并发数据结构的使用。
涵盖的内容
6个视频7篇阅读材料1个作业1个编程作业
接下来的两个视频将展示学习 Java 中并行编程和分布式编程的重要性。Vivek Sarkar 教授将与 Two Sigma 的业内专业人士讨论如何在实际工作中运用我们另外两门课程的主题。
涵盖的内容
2个视频1篇阅读材料
获得职业证书
将此证书添加到您的 LinkedIn 个人资料、简历或履历中。在社交媒体和绩效考核中分享。
位教师

从 软件开发 浏览更多内容
- 状态:免费试用
Rice University
- 状态:免费试用
Board Infinity
- 状态:免费试用
Rice University
人们为什么选择 Coursera 来帮助自己实现职业发展




学生评论
663 条评论
- 5 stars
66.81%
- 4 stars
24.73%
- 3 stars
5.88%
- 2 stars
1.05%
- 1 star
1.50%
显示 3/663 个
已于 Nov 26, 2020审阅
It could have been better. Course content is very basic and just scratches the surface of concurrent programming. However, fully recommend it for beginners.
已于 Apr 30, 2020审阅
It was a really interesting course where the things were presented in a very simplified manner in which I could learn the topics in a short span of time.
已于 Sep 1, 2017审阅
Great course. With minimal effort you can learn about important concepts and see immediate results regarding the actual speedup you can achieve using concurrent programming.
常见问题
要获取课程资料、作业和证书,您需要在注册课程时购买证书体验。 您可以尝试免费试听,或申请资助。课程可能提供 "完整课程,无证书"。通过该选项,您可以查看所有课程资料,提交必要的评估,并获得最终成绩。这也意味着您无法购买证书体验。
注册课程后,您就可以访问专项课程中的所有课程,完成作业后还可以获得证书。您的电子证书将添加到您的 "成就 "页面--在那里,您可以打印证书或将其添加到您的 LinkedIn 个人资料中。
是的。在特定的学习课程中,如果您付不起注册费,可以申请助学金或奖学金。如果您选择的学习课程有助学金或奖学金,您可以在说明页面找到申请链接。
更多问题
提供助学金,