当Java提供并发编程功能时,使用Clojure (而不是Java)的主要优势是什么?
发布于 2009-10-15 10:05:36
Clojure是为concurrency设计的。
Clojure在比Java更高的抽象级别上提供了并发原语。其中一些是:
所有这些并发原语都构建在Clojure不可变数据结构(即列表、映射、向量等)之上。当您进入可变Java对象的世界时,所有的原语都失效了,您又回到了锁和条件变量(必要时也可以在clojure中使用它们)。
发布于 2009-10-15 07:32:28
如果不是Clojure方面的专家,我会说Clojure的主要优点是Clojure隐藏了并发编程的许多细节,我们都知道细节中有魔鬼,所以我认为这是一件好事。
您可能希望检查来自Rick Hickey ( Clojure的创建者)的关于Clojure中并发的this excellent presentation。编辑:显然JAOO已经删除了旧的演示文稿。我还没能找到这个的新来源。
发布于 2009-10-15 08:30:00
因为Clojure是基于函数式编程范式的,也就是说,它通过以下几个简单的规则在并发中实现安全:
不可变的state
没有副作用
这样编写的程序几乎具有内置的水平可伸缩性,而基于锁的并发机制(就像Java一样)很容易出现涉及竞争条件、死锁等的错误。
https://stackoverflow.com/questions/1570810
复制相似问题