蘑菇云行动前传第17课:Scala并发编程实战

package com.dtspark.scala.basics

import scala.actors.Actor

/**

* Scala多线程实战

* 1:开发环境:Scala IDE(版本为:2.11.8)集成开发环境

* 2:引用jar包:scala-actors.jar,scala-actors-migration.jar

* 3:该实例使用Scala模式匹配以及Scala多线程使用技术

* Scala多线程并发调用方法为:

* 伴生类: class XXX extends Actor

* def act(){

*     while(true){

*     receive{

*     case

*     case

*     }

*     }

*    }

* 伴生方法:object(){

* 实例化  XXX

*   调用start()方法

* }

*/

object HelloActor {

def main(args: Array[String]): Unit = {

val helloActor = new HelloActor

//调用scala多线程方法

helloActor.start()

val helloBackActor = new HelloBackActor(helloActor)

helloBackActor.start()

//    var counter = 0

/*while (true) {

helloActor ! "Wow" + counter

counter += 1

Thread.sleep(3000)

}*/

//    helloActor ! Hello("Spark", "Spark means Dollars")

}

}

case class Hello(name: String,  content: String, sender:Actor)

case class HelloBack(name: String, content: String, sender:Actor)

class HelloActor extends Actor{

var counter = 0

def act() {

while(true){

receive {

case content:String => println("Message: " + content)

case Hello(name, content,sender) => {

println("HelloActor : " + "name: " + name + " content: " + content + counter)

counter += 1

Thread.sleep(3000)

sender ! HelloBack(name, content+counter, this)

}

}

}

}

}

class HelloBackActor(val helloActor: Actor) extends Actor{

var counter = 0

def act() {

helloActor ! Hello("Spark",  "Love is here", this)

while(true){

receive {

case content:String => println("Message: " + content)

case HelloBack(name, content,sender) =>  {

println("HelloBackActor : " + "name: " + name + " content: " + content + counter)

counter += 1

Thread.sleep(3000)

sender ! Hello(name, content+counter, this)

}

}

}

}

}

//运行结果为:

HelloActor : name: Spark content: Love is here0

HelloBackActor : name: Spark content: Love is here10

HelloActor : name: Spark content: Love is here111

HelloBackActor : name: Spark content: Love is here1121

HelloActor : name: Spark content: Love is here11222

HelloBackActor : name: Spark content: Love is here112232

HelloActor : name: Spark content: Love is here1122333

HelloBackActor : name: Spark content: Love is here11223343

时间: 2024-12-26 17:57:22

蘑菇云行动前传第17课:Scala并发编程实战的相关文章

第66讲:Scala并发编程实战初体验及其在Spark源码中的应用解析

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第66讲:Scala并发编程实战初体验及其在Spark源码中的应用解析百度云:http://pan.baidu.com/s/1pJ5jzHx腾讯微云:http://url.cn/aSawrm360云盘:http://yunpan.cn/cctL3QYACaVNa  访问密码 c0fb 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

蘑菇云行动前传第16课:Scala implicits编程彻底实战及Spark源码鉴赏

package com.dtspark.scala.basics /** * Implicits隐式转换实战 */ class Man(val name:String) /*object Man{ implicit def man2SuperMan(man:Man)=new SuperMan(man.name) }*/ object implicits{ implicit def man2SuperMan(man:Man)=new SuperMan(man.name) } class Super

Scala并发编程实战初体验及其在Spark源码中的应用解析之Scala学习笔记-56

package com.leegh.actor import scala.actors.Actor /** * @author Guohui Li */object First_Actor extends Actor { def act() { for (i <- 1 to 10) { println("Step : " + i) println(Thread.currentThread().getName) Thread.sleep(2000) } }} object Seco

Spark进阶视频之Scala并发编程实战初体验及其在Spark源码中的应用解析

王家林亲授<DT大数据梦工厂>大数据实战视频"Scala深入浅出实战经典"视频.音频和PPT下载! 欢迎广大Spark爱好者学习交流.也欢迎广大学习爱好者加入DT大数据梦工厂交流群:462923555DT大数据微信公众账号:DT_Spark 视频观看链接http://www.tudou.com/plcover/Yy5F5gsurSE/ 视频下载地址百度云:http://pan.baidu.com/s/1eQGqzEa腾讯微云: http://url.cn/SshT6b

scala并发编程Actor实战

今天在这里跟大家分享下王家林老师讲的scala编程中的actor的并发编程. 在java中,同时进行一个操作的时候,java会先把共享数据锁死,从而避免不同的操作来同时操作一个数据,这个就形成了资源调度的问题,而且如果用不好,还会造成死锁.而在scala中,通过类似消息的发送和接收的队列的方式,来访问同一个共享数据,这样一来,当轮到一个操作来访问某个数据的时候,不会发生另一个操作也同时访问的该数据的情况,这样就避免了资源争用的问题及死锁的发生.下面我们通过一个小小的实例来看看scala是怎样通过

大数据Spark蘑菇云前传第15课:Scala类型参数编程实战及Spark源码鉴赏(学习笔记)

前传第15课:Scala类型参数编程实战及Spark源码鉴赏 本課課程: Spark源码中的Scala类型系統的使用 Scala类型系統编程操作实战 Spark源码中的Scala类型系統的使用 classOf[RDD[_]] 這個也是类型系統 這里的意思是說 B 這種類型必需至少是 A 這樣類型 Ordering Scala类型系統编程操作实战 作為類型系統最大的就可以對類型進行限制,在Scala 中的類型系統,他本身也作為對象.e.g. 我們可以建立 Person 這個類,現在可以建立一個什麼

第三季-第17课-信号量同步编程

第17课-信号量同步编程 17.1 核心概念--进程同步 一组并发进程进行互相合作.互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步. 17.2 生产者消费者问题 1. 问题描述 这里面有两个角色:生产者和消费者.假设生产者生产的产品需要两步才能完成并且使用.但是,当生产者刚刚完成了对产品的第一步加工的时候,产品就被消费者买走了.可是他们之间并没有相应的沟通,这就导致,消费者会以为他买到了完成的产品. 2. 程序化 在文件夹里面创建producer.c和customer.c文件,同时创

Scala 深入浅出实战经典 第67讲:Scala并发编程匿名Actor、消息传递、偏函数解析

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/LwsfuGIsWEk/优酷:http://v.youku.com/v_show/id_

Scala入门到精通——第二十六节 Scala并发编程基础

作者:摇摆少年梦 视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 Scala并发编程简介 Scala Actor并发编程模型 react模型 Actor的几种状态 Actor深入使用解析 本节主要介绍的scala并发编程的基本思想,由于scala在2.10版本之后宣布使用akka作为其并发编程库,因此本节只进行基础性的内容介绍,后面将把重点放在akka框架的讲解上. 1. Scala并发编程简介 2003 年,Herb Sutter 在他的文章 "