File tree Expand file tree Collapse file tree 1 file changed +11
-10
lines changed Expand file tree Collapse file tree 1 file changed +11
-10
lines changed Original file line number Diff line number Diff line change 3
3
<!-- Concurrent Programming -->
4
4
# 第二十四章 并发编程
5
5
6
- > 爱丽丝:“但是我不想进入疯狂的人群中 ”
6
+ > 爱丽丝:“我可不想到疯子中间去 ”
7
7
>
8
- > 猫咪:“oh,你无能为力,我们都疯了, 我疯了,你也疯了”
8
+ > 猫咪:“啊,那就无办法了,我们这都是疯子。 我疯了,你也疯了”
9
9
>
10
10
> 爱丽丝:“你怎么知道我疯了”。
11
11
>
12
- > 猫咪:“你一定疯了,否则你不会来到这里” ——爱丽丝梦游仙境 第6章。
12
+ > 猫咪:“你一定是疯了,否则你就不会来这儿” ——爱丽丝梦游仙境 第6章。
13
13
14
- 到目前为止,我们一直在编程,就像文学中的意识流叙事设备一样:首先发生一件事,然后是下一件事。我们完全控制所有步骤及其发生的顺序。如果我们将值设置为5,那么稍后会回来并发现它是47,这将是非常令人惊讶的。
15
14
16
- 我们现在进入了一个奇怪的并发世界,在此这个结果并不令人惊讶。你信赖的一切都不再可靠。它可能有效,也可能无效。很可能它只会在某些条件下有效。你必须知道和了解这些情况以确定哪些有效 。
15
+ 在本章之前,我们惯用一种简单顺序地叙事方式来编程,有点类似文学中的意识流:第一件事发生了,然后是第二件,第三件……总之,我们完全掌握着事情发生的进展和顺序。如果将值设置为5,结果再看时它已变成47的话,这就很匪夷所思了 。
17
16
18
- 作为类比,你的正常生活是在牛顿力学中发生的。物体具有质量:它们会下降并转移它们的动量。电线具有阻力,光线可以直线传播。但是,如果你进入非常小、热、冷、或者大的世界(我们不能生存),这些事情会发生变化。我们无法判断某物体是粒子还是波,光是否受到重力影响,一些物质变为超导体 。
17
+ 现在,我们来到了陌生的并发世界。对于这样的结果一点都不奇怪。你原来信赖的一切都不再可靠。它可能有效,也可能无效。更可能得是,它在某些情况下会起作用,而在另一些情况下则不会。只有了解了这些情况,我们才能正确地行事 。
19
18
20
- 假设我们在同时多条故事线进行的间谍小说里,而非单一意识流地叙事。第一个间谍在特殊的岩石处留下了微缩胶片。当第二个间谍过来准备取回包裹时,胶片可能已被第三个间谍带走了。但是小说并没有交代此处的细节。直到故事结尾,我们都没搞清楚这里到底发生了什么 。
19
+ 作为类比,我们正常生活是发生在经典牛顿力学中的。物体具有质量:会落下并转移动量。电线有电阻,光直线传播。假如我们进入极小、极热、极冷、或是极大的世界(我们不能生存),这些事情会发生变化。我们无法判断某物体是粒子还是波,光是否受到重力影响,一些物质会变为超导体 。
21
20
22
- 构建并发应用程序非常类似于游戏 [ Jenga ] ( https://en.wikipedia.org/wiki/Jenga ) ,每当你拉出一个块并将其放置在塔上时,一切都会崩溃。每个塔楼和每个应用程序都是独一无二的,有自己的作用。你从构建系统中学到的东西可能不适用于下一个系统 。
21
+ 假设我们处在条故事线并行的间谍小说里,而非单一意识流地叙事。第一个间谍在某个特别的岩石底下藏了微缩胶片。当第二个间谍来取回包裹时,胶片可能已被第三个间谍带走了。小说并没有交代此处的细节。所以直到故事结尾,我们都没搞清楚到底发生了什么 。
23
22
24
- 本章是对并发性的一个非常基本的介绍。虽然我使用了最现代的 Java 8 工具来演示原理,但这一章远非对该主题的全面处理。我的目标是为你提供足够的基础知识,使你能够把握问题的复杂性和危险性,从而安全的通过这些鲨鱼肆虐的困难水域 。
23
+ 构建并发应用好比 [ 搭积木 ] ( https://en.wikipedia.org/wiki/Jenga ) 。每拉出一块放在塔顶时,整个都可能会崩塌。每个积木塔和应用程序都是独一无二的,有着自己的作用。你在某个系统构建中学到的东西并不一定适用于下一个系统 。
25
24
26
- 对于更麻烦和底层的细节,请参阅附录:[ 并发底层原理] ( ./Appendix-Low-Level-Concurrency.md ) 。要进一步深入这个领域,你还必须阅读 * Brian Goetz* 等人的 《Java Concurrency in Practice》。尽管在撰写本文时,该书已有十多年的历史了,但它仍然包含我们必须了解和理解的要点。理想情况下,本章和上述附录是阅读该书的良好前提。另外,* Bill Venner* 的 《Inside the Java Virtual Machine》也是很有价值的资源。它详细描述了 JVM 的内部工作方式,包括线程。
25
+ 本章是对并发的基本介绍。虽然我们用到了现代的 Java 8 工具来演示原理,但本章还远未全面论述并发。我的目标是为你提供足够的基础知识,你能够把握问题的复杂性和危险性,从而安全地渡过这片鲨鱼肆虐的困难水域。
26
+
27
+ 更多麻烦和底层的细节,请参阅附录:[ 并发底层原理] ( ./Appendix-Low-Level-Concurrency.md ) 。要进一步深入这个领域,你还必须阅读 * Brian Goetz* 等人的 《Java Concurrency in Practice》。在撰写本文时,该书已有十多年的历史了,但它仍包含我们必须了解和明白的知识要点。理想情况下,本章和上述附录是阅读该书的良好前提。另外,* Bill Venner* 的 《Inside the Java Virtual Machine》也很值得一看。它详细描述了 JVM 的内部工作方式,包括线程。
27
28
28
29
29
30
<!-- The Terminology Problem -->
You can’t perform that action at this time.
0 commit comments