Scala并发编程特点

首先,java基本满足了相互独立且同时执行的并发处理的操作,java通过数据锁的概念和共享数据的概念实现了多线程并发情况下的数据操作管理
当多个线程对共享数据访问时,有一个监视器的东西再起作用,监视器会管理各线程对共享数据的操作
Scala并发编程:
Actor相当于java中的Thread、Runnable,原理:
1、通过发消息、消息队列传输、接收消息的方式实现了多线程
2、每个线程相当于一个邮箱,可以接收不同的消息邮件
基于Actor的框架Akka实现并发编程(比较重要)
如下两种方式:
通过继承Actor实现多线程方法
匿名函数Actor实现多线程
原理:
1、receive接收到消息时先判断接收消息是否与case模式匹配,即isDefinedAt是否为true,如果匹配,则将消息传递给偏函数apply方法,然后执行case,
2、receive偏函数有一个apply方法,如果没有匹配到key,则忽略掉此消息,actor一直处在阻塞中,即等待接收消息

并发编程原生线程Actor、Cass Class下的消息传递和偏函数
这里写图片描述
注:
1、actor之间消息通讯用sender,相当于两个邮箱之间的邮件传递方式
2、消息传递过程中用case class、case object(做到了消息传递过程中的不变性)、偏函数、模式匹配三者的结合比较常用
3、主线程也可以作为actor使用,尤其有界面的scala编程中main编程至关重要
4、偏函数有很多种,receive将消息传递给偏函数,
5、消息传递时,可以传递收消息的actor,当actor收到消息时通过传过来的actor进行消息回复,最简单的一种就是sender
6、传递消息的方式有很多种,例如:master、worker,state,sender等,
7、主线程用self.receive的方式接收来自其他actor的消息
非常非常重要

Scala并发编程react、loop
这里写图片描述
这里写图片描述
在scala中通过react、loop线程重用的方式提高性能
注:
每个actor都有自己的线程,原生的actor独占一个线程,当接收不到消息时,一直处于阻塞状态,
通过react、loop实现线程的重用:
1、react执行完语句体之后没有自己的返回,就此结束,所以可以释放堆、栈,可以供其他actor享用
2、loop就是重复循环,跟继承Actor,while(true)方式基本一致
以上方式在具体界面的交互中非常重要,与java中的多线程的实现基本一致,但是比java的多线程复用更加简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值