11.11 并行集合

Scala 为了充分使用多核 CPU,提供了并行集合(有别于前面的串行集合),用于多核环境的并行计算。 主要用到的算法有:

  1. Divide and conquer : 分治算法,Scala通过splitters,combiners等抽象层来实现,主要原理是将计算工作分解很多任务,分发给一些处理器去完成,并将它们处理结果合并返回

  2. Work stealin算法,主要用于任务调度负载均衡(load-balancing),通俗点完成自己的所有任务之后,发现其他人还有活没干完,主动(或被安排)帮他人一起干,这样达到尽早干完的目的

package com.atguigu.day11.operate

import scala.collection.immutable
import scala.collection.parallel.immutable.ParSeq

object ParaDemo {
  def main(args: Array[String]): Unit = {
    // 串行
    (1 to 5).foreach(println(_))
    println()
    // 集合调用par方法,得到并行集合. 输出是按照每个任务来的
    (1 to 5).par.foreach(println(_))

    // 查看每个线程的执行情况
    val list1: immutable.IndexedSeq[String] = (1 to 10).map(a => {
      Thread.currentThread().getName + " -> " + a
    })
    val list2: ParSeq[String] = (1 to 10).par.map(a => {
      Thread.currentThread().getName + " -> " + a
    })

    println(list1)
    println(list2)

  }
}

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-12-05 23:01:32

results matching ""

    No results matching ""