java - 在Clojure中使用并发之前是否应该全面了解Java并发和线程模型等?

标签 java multithreading concurrency clojure lisp

<分区>

我不太了解 Java 中的并发性,例如 Fork/Join Framework、锁、线程(综合)、执行器等。

我对此只有一点基础知识和理论。

既然Clojure运行在JVM上,我想在进入Clojure(并发)之前我必须非常了解Java的并发模型?

我写 Java,但在工作中从不需要并发。

现在我编写 Clojure 并想用它做一些并发/并行的事情。

我应该了解 Java 的并发模型还是可以在练习 Clojure 的同时学习?

最佳答案

不,您不需要学习这些东西来使用 Clojure 的并发和并行特性。

我永远不会提倡不学习某些东西,但在这种情况下,如果您同时学习这些东西,您可能会很想去 Clojure 中获取锁,这几乎总是不必要的,而不是这样做惯用的 Clojure 方式。

您当然需要学习的是并发编程和并行编程的基本思想。诸如如何智能地拆分工作,以及如何合并结果以便获得正确答案之类的事情。

还有如何避免创建太多导致资源匮乏的线程。这些东西可以用(几乎)任何语言学习,尽管在 Clojure 中学习它们比其他语言更有趣。

一个可能的危险是,如果在没有 Clojure 功能的情况下工作,当您回到 Java 中更传统的 OO 方法时,您可能会发现不太满意。

关于java - 在Clojure中使用并发之前是否应该全面了解Java并发和线程模型等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349756/

相关文章:

c# - 如何使用异常处理创建永无止境的 DataFlow Mesh?

linux - Linux 中的线程和 LWP

C++ 11 多线程合并排序错误 “no instance of contructor ' std::thread' 匹配参数列表”

java - 以编程方式配置 Log4j 记录器

Java - "varible name"无法解析为变量 - 我找不到我的错误所在

python - 如何在 Python 中停止循环线程?

multithreading - 快生产者和慢消费者

java - ConcurrentHashMap 和 Collections.synchronizedMap(Map) 有什么区别?

java - 无效响应

java - 方法引用不符合功能接口(interface),但编译不会失败......是设计使然吗?