基本的并发概念

并发与并行

同步

在并发中,我们可以将同步定义为一种协调两个或更多任务以获得预期结果的机制。

并发系统中有不同的同步机制。从理论角度来看,最流行的机制如下:

不可变对象

不可变对象是一种非常特殊的对象。在其初始化后,不能修改其可视状态(其属性值)。
如果想修改一个不可变对象,那么你就必须创建一个新的对象。

不可变对象的主要优点在于它是线程安全的。你可以在并发应用程序中使用它而不会出现任何问题。

不可变对象的一个例子就是 Java 中的 String 类。当你给一个 String 对象赋新值时,会创建一个新的 String 对象。

原子操作和原子变量

原子操作是一种发生在瞬间的操作。
在并发应用程序中,可以通过一个临界段来实现原子操作,以便对整个操作采用同步机制。

原子变量是一种通过原子操作来设置和获取其值的变量。
可以使用某种同步机制来实现一个原子变量,或者也可以使用 CAS 以无锁方式来实现一个原子变量,而这种方式并不需要任何同步机制。

共享内存与消息传递

任务可以通过两种不同的方法来相互通信: