diff --git a/src/ch17-02-concurrency-with-async.md b/src/ch17-02-concurrency-with-async.md
index 4e7aa62..ff90aa0 100644
--- a/src/ch17-02-concurrency-with-async.md
+++ b/src/ch17-02-concurrency-with-async.md
@@ -4,13 +4,13 @@
>
> commit 62d441060d66f9a1c3d3cdfffa8eed40f817d1aa
-在这一部分,我们采用异步来应对一些之前第十六章中采用并发面对的相同的问题。因为之前我们已经讨论了很多关键理念了,这一部分我们会专注于线程与 future 的区别。
+在这一部分,我们将使用异步来应对一些与第十六章中通过线程解决的相同的并发问题。因为之前我们已经讨论了很多关键理念了,这一部分我们会专注于线程与 future 的区别。
在很多情况下,使用异步处理并发的 API 与使用线程的非常相似。在其它的一些情况,它们则非常不同。即便线程与异步的的 API *看起来* 很类似,通常它们有着不同的行为,同时它们几乎总是有着不同的性能特点。
### 计数
-第十六章中我们应付的第一个任务是在两个不同的线程中计数。让我们用异步来做相同的事。`trpl` crate 提供了一个 `spawn_task` 函数,它看起来非常像 `thread::spawn` API,和一个 `sleep` 函数,这是 `thread::sleep` API 的异步版本。我们可以结合它们来实现与采用线程的相同的计数示例,如示例 17-6 所示。
+第十六章中我们应付的第一个任务是在两个不同的线程中计数。让我们用异步来完成相同的任务。`trpl` crate 提供了一个 `spawn_task` 函数,它看起来非常像 `thread::spawn` API,和一个 `sleep` 函数,这是 `thread::sleep` API 的异步版本。我们可以将它们结合使用,实现与线程示例相同的计数功能,如示例 17-6 所示。