java - 试图找到专注于多线程的 Scala 教程

标签 java multithreading scala loops multiprocessing

Scala 似乎比 Java 有很多特性和改进。我很难把我想首先学习的关于 Scala 的东西隔离开来。例如,如果我只想采用 for 循环并使它们在多个线程或进程上运行,我应该在 Google 上寻找什么?我来自 GPU 计算背景,从中可以很容易地获得关于如何让事情运行得更快的高级 View 。

最佳答案

  • Scala 的并行集合特别简单。并行化昂贵的操作 f(i)在整数上 i <- 1 to 10就这么简单,

    (1 to 10).par.map(i => f(i))
    

    Scala 将尝试分配与系统中可用的内核/处理器数量相当的工作线程数。这是包含更多详细信息的视频:http://days2010.scala-lang.org/node/138/140

  • Akka framework是一种成熟的、主要基于参与者的并发方法,允许在线程或远程进程上并行化。 Actor 基本上是可以传递消息而不是共享状态的线程。新成立公司Typesafe正在开发 Scala 语言和 Akka。

  • 您也可以尝试 draft release Scala 的软件事务内存 (STM) 库。该库旨在包含在标准 Scala 发行版中。与手动管理的线程相比,STM 是一种更简单的并发模型,可减少出现死锁等错误的可能性。它的工作原理是将通信操作序列分组到单个同步块(synchronized block)中,如果多个线程使用共享状态执行某些操作,结果证明相互不兼容,则该同步块(synchronized block)可能会失败并回滚。据推测,为了方便需要付出一些性能成本;我不确定 STM 扩展到大量线程的效果如何。

  • Spark framework解决集群计算问题,似乎是 MapReduce 的推广。

  • 对于 Scala 的 GPU 编程,有 ScalaCL .您还可以使用 Java bindings .

  • 还有一项非常有趣的语言虚拟化工作正在斯坦福大学和 EPFL 的实验室之间共同努力。 This page有论文链接,还有一个course at Stanford有更多链接。在异构计算环境(包括 GPU)上开发用于高性能计算的 DSL 有多种激动人心的应用。

更新。 Daniel Sobral 还建议 Tools and Libraries wiki .

关于java - 试图找到专注于多线程的 Scala 教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162715/

上一篇:Java:JAX-WS 映射

下一篇:java - JVM 和时区

相关文章:

java - 这是 Java 中 AtomicReference 的正确用例吗?

file - Scala - 计算具有定义文件扩展名的目录中的文件数

android - 从服务中的线程发送 toast

java - 使用另一个 ArrayList 中的 ArrayList 处理复杂的 JSON 响应

java - 使用递归返回 void 方法

java - 为什么要在 invokeAll 方法之后调用 join 呢?

c++ - 多线程。我是否需要关键部分才能进行只读访问?

scala - 如何在 Spark 中创建包含 29 列的数据集

mysql - 注入(inject)数据库连接池

java - 如何在运行时找到最大堆大小