为什么 Clojure 而不是 Java 进行并发编程

2022-09-03 04:04:21

当Java为并发编程提供功能时,使用Clojure(而不是Java)的主要优势是什么?


答案 1

Clojure是为并发而设计的。

Clojure 提供比 Java 更高的抽象级别的并发原语。其中一些是:

  • 软件事务内存系统,用于处理对共享引用的同步和协调更改。您可以将多个引用作为原子操作进行更改,而不必担心程序中的其他线程正在执行的操作。在您的交易中,您将始终拥有一致的世界观。

  • 用于异步更改的代理系统。这类似于 Erlang 中的消息传递。

  • 对变量的线程局部更改。这些变量具有根绑定,该绑定由程序中的每个线程共享。但是,当您重新绑定变量时,它只会在该线程中可见。

所有这些并发原语都是建立在Clojures不可变数据结构(即列表,映射,向量等)之上的。当您进入可变Java对象的世界时,所有基元都会崩溃,并且您又回到了锁和条件变量(必要时也可以在clojure中使用)。


答案 2

在不是Clojure专家的情况下,我会说主要的优势是Clojure隐藏了很多并发编程的细节,我们都知道魔鬼在细节中,所以我认为这是一件好事。

您可能想查看Rick Hickey(Clojure的创建者)关于Clojure并发性的精彩演示。编辑:显然JAOO已经删除了旧的演示文稿。我还没有找到新的来源。


推荐