gpt4 book ai didi

java - Java 与 Clojure 的良好并发示例

转载 作者:太空狗 更新时间:2023-10-29 22:39:51 25 4
gpt4 key购买 nike

据说 Clojure 是一种使多线程编程更容易的语言。

来自Clojure.org网站:

Clojure simplifies multi-threaded programming in several ways.

现在我正在寻找一个用 Java 和 Clojure 解决的重要问题,这样我就可以比较/对比它们的简单性。有人吗?

最佳答案

我建议您也看看 Christophe Grand 的 thread safe blocking queue ;它不到 20 行,但包含很多功能,在我看来,它展示了对 Clojure 的一些并发特性、不可变性、原子和惰性序列的专业使用。

考虑 Java 替代方案 java.util.concurrent.LinkedBlockingQueue is 842 lines微妙的(可以说是复杂的)注释代码,你开始理解 Clojure 是如何真正实现其并发 promise 的;显着提高抽象级别并交付正确的实现,代码减少大约 10-20 倍。

您还会注意到,在阅读 Java 代码时,真的很难只见树木不见森林……如果给了它,您能否通过查看它来确定它的正确性?还要记住,这段代码是由 Doug Lea(可以说是 Java 并发方面最重要的专家)编写的,并且对于 Java 来说具有很高的可读性;我非常怀疑我能否在 Java 中快速编写可读的高性能代码并确保其正确性。

将此与 Clojure 版本进行对比,一旦熟悉了 Clojure 的基础知识,就很容易梳理并理解它是如何工作的……在 20 分钟内,我能够理解实现的每一行,并确保其正确性.现在我对 Clojure 的习语和 FP 更加熟悉了,我猜现在这将花费我将近 5 分钟的时间。我也可能能够在几小时或几分钟内在 Clojure 中编写出像这样的“正确”代码。

克里斯托夫 clojure wrapper上面的 java 类也很有启发性,因为它与第一个版本共享相同的功能接口(interface)。

关于java - Java 与 Clojure 的良好并发示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com