Scala并发编程模型AKKA

本文介绍了Scala中的final关键字、type别名以及样例类和样例对象的概念。重点讲解了并发编程模型AKKA,特别是AKKA的Actor模型,它是解决并发问题的一种高效工具,提供异步、非阻塞的事件驱动编程模型,适用于高并发场景。在Actor模型中,所有的事物都是Actor,它们之间通过消息通信,简化了并发编程并提升了性能。
摘要由CSDN通过智能技术生成

关键字

1)final
如果方法不想被重写可以使用final关键字进行修饰
用final修饰的:
类:类不能被继承
方法:不能被重写
val

2)type
别名设置
使我们的程序变得更灵活
T

trait b {
  type T
  def go(str:T)={
    println(str)
  }
}
object test  extends b {
  override type T = String
  def main(args: Array[String]): Unit = {
    test.go("ycf")
  }
}

样例类&样例对象

1)样例类
样例类支持模式匹配
写法:case class 类名(属性…)

case class Boy(high:Int)
case class Girl(high:Int)
object Test extends App {
  def getmatch(obj:Any)= obj match {
    case Boy(x)=>print(x)
    case Girl(x)=>print(x)
  }
  getmatch(Boy(155))
}

2)样例对象

写法:case object 类名(属性…)
不能封装数据
支持模式匹配

case object Check 
 
match{ 
    case "Check" => println(Check) 
} 

样例类,模式匹配,偏函数

https://www.jianshu.com/p/bd01f88b6c33

并发编程模型AKKA

Spark使用底层通信框架AKKA
分布式
master
worker

hadoop使用的是rpc

1)akka简介

写并发程序很难,AKKA解决spark这个问题。

akka构建在JVM平台上,是一种高并发、分布式、并且容错的应用工具包

akka用scala语言编写同时提供了scala和java的开发接口

akka可以开发一些高并发程序。

2)Akka的Actor模型

akka处理并发的方法基于actor模型
在基于actor的系统中,所有事物都是actor。
actor作为一个并发模型设计和架构的,面向对象不是。
actor与actor之间只能通过消息通信。

Akka特点:
(1)对并发模型进行了更高的抽象
(2)异步、非阻塞、高性能的事件驱动编程模型
(3)轻量级事件处理(1G内存可以容纳百万级别的Actor)
同步:阻塞(发消息 一直等待消息)
异步:不阻塞(发消息 不等待 该干嘛干嘛)

actor简化了并发编程,提高了程序性能。

Actor

在这里插入图片描述

Actor工作机制
在这里插入图片描述

class ZioAcrot(h: ActorRef) extends Actor{
  override def receive: Receive = {
    case "我是假面骑士zio" =>
      h ! "你好,我是假面骑士"
  }
}

class MeActor extends Actor{
  override def receive: Receive = {
      case "你好,我是假面骑士" => println("好巧,我也是")
      case "我打不赢你" => println("是的")
  }
}

object AkkaDrive {
  //通过ActorSystem创建Actor
  private val akdr = ActorSystem("akdr")
  //Actor通过AcrotRef通信
  private val me_actor = akdr.actorOf(Props[MeActor],"meactor")

  private val zio_actor = akdr.actorOf(Props(new ZioAcrot(me_actor)),"zioactor")

  def main(args: Array[String]): Unit = {
    zio_actor ! "我是假面骑士zio"
  }
}

好巧,我也是

所以发送给另一个Actor的邮箱我们只需要拿到他的代理,按先进先出队列处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值