Joh*_*son 16 java clojure concurrent-programming
当Java提供并发编程的功能时,使用Clojure(而不是Java)的主要优势是什么?
Jon*_*nas 18
Clojure是为并发而设计的.
Clojure在比Java更高的抽象级别上提供并发原语.其中一些是:
软件事务内存系统,用于处理共享引用的同步和协调更改.您可以将多个引用更改为原子操作,而不必担心程序中的其他线程正在执行的操作.在您的交易中,您将始终拥有一致的世界观.
用于异步更改的代理系统.这类似于在Erlang中传递的消息.
将本地更改线程化为变量.这些变量具有根绑定,由程序中的每个线程共享.但是,当您重新绑定变量时,它只会在该线程中可见.
所有这些并发原语都建立在Clojures不可变数据结构(即列表,映射,向量等)之上.当您进入可变Java对象的世界时,所有基元都会崩溃,您将回到锁定和条件变量(必要时也可以在clojure中使用).
因为Clojure基于函数式编程范例,也就是说它通过遵循一些简单的规则来实现并发性的安全性:
因此编写的程序几乎具有内置的水平可伸缩性,而基于锁的并发机制(与Java一样)容易出现涉及竞争条件,死锁等的错误.
使用不可变类型的一个很酷的事情是大多数内置函数已经是多线程的.简单的"减少"将跨越多个核心/处理器,无需您进行任何额外的工作.
因此,确保您可以使用Java进行多线程,但它涉及锁等等.Clojure是多线程的,没有任何额外的努力.
归档时间: |
|
查看次数: |
2584 次 |
最近记录: |