Scala并发编程【快速入门】
1.简介
Scala的actor提供了一种基于事件的轻量级线程。只要使用scala.actors.Actor伴生对象的actor()方法,就可以创建一个actor。它接受一个函数值/闭包做参数,一创建好就开始运行。用!()方法给actor发消息,用receive()方法从actor接收消息。receive()也可以闭包为参数,通常用模式匹配处理接收到的消息。
scala提供了一种完全有别于java的并发实现,那就是Actor消息机制。不像java那样基于共享数据和锁的机理,scala基于消息实现并发,没有共享数据。
2.代码快速入门
package com.dingxin.entrance import scala.actors.Actor
/**
* scala并发编程
* 基于Actor消息机制,适用于scala2.10及之前版本,新版本使用akka
* Created by zhen on 2019/1/22.
*/ object Left_Actor extends Actor{
def act(){
for(i <- 1 to 10){
println(Thread.currentThread().getName + " step : " + i)
Thread.sleep(1000)
}
}
}
object Right_Actor extends Actor{
def act(){
for(i <-1 to 10){
println(Thread.currentThread().getName + " step : " + i)
Thread.sleep(1000)
}
}
}
object My_Actor {
def main(args: Array[String]) {
// 启动消息机制
Left_Actor.start() // 每个都是一个线程
Right_Actor.start()
}
}
3.结果
ForkJoinPool-1-worker-13 step : 1
ForkJoinPool-1-worker-11 step : 1
ForkJoinPool-1-worker-11 step : 2
ForkJoinPool-1-worker-13 step : 2
ForkJoinPool-1-worker-11 step : 3
ForkJoinPool-1-worker-13 step : 3
ForkJoinPool-1-worker-13 step : 4
ForkJoinPool-1-worker-11 step : 4
ForkJoinPool-1-worker-11 step : 5
ForkJoinPool-1-worker-13 step : 5
ForkJoinPool-1-worker-13 step : 6
ForkJoinPool-1-worker-11 step : 6
ForkJoinPool-1-worker-11 step : 7
ForkJoinPool-1-worker-13 step : 7
ForkJoinPool-1-worker-13 step : 8
ForkJoinPool-1-worker-11 step : 8
ForkJoinPool-1-worker-13 step : 9
ForkJoinPool-1-worker-11 step : 9
ForkJoinPool-1-worker-11 step : 10
ForkJoinPool-1-worker-13 step : 10
4.分析
Actor消息机制使用start开启,这和java类似,每一个start都是一个线程,彼此之间基于消息实现并发编程,没有共享数据!
Scala并发编程【快速入门】的更多相关文章
- .Net Core WebAPI 基于Task的同步&异步编程快速入门
.Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...
- Scala 深入浅出实战经典 第68讲:Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- Scala 深入浅出实战经典 第67讲:Scala并发编程匿名Actor、消息传递、偏函数解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala并发编程react、loop代码实战具体解释
演示样例代码及凝视: //scala并发编程中的react和loop,共同特点: //通过线程存用的方式让性能有所提升. //Actor本身的运行,被actor子系统管理的时候,会有一个或者多个远程的 ...
- 王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解
刚才看了一下,群里王家林老师又更新课程了,真为王老师的勤奋感到佩服,于是迫不及待的下载下来观看学习.本期讲的是关于scala并发编程的react.loop代码实战. 信息来源于 DT大数据梦工厂微信公 ...
- COM编程快速入门
COM编程快速入门 COM编程快速入门 http://www.vckbase.com/index.php/wv/1642 COM是一种跨应用和语言共享二进制代码的方法.与C++不同,它提倡源代码重 ...
- Haskell 函数式编程快速入门【草】
什么是函数式编程 用常规编程语言中的函数指针.委托和Lambda表达式等概念来帮助理解(其实函数式编程就是Lambda演算延伸而来的编程范式). 函数式编程中函数可以被非常容易的定义和传递. Hask ...
- Scala并发编程
Scala的actor提供了一种基于事件的轻量级线程.只要使用scala.actors.Actor伴生对象的actor方法,就可以创建一个actor.它接受一个函数值/闭包做参数,一创建好就开始运行. ...
随机推荐
- mysql 开发基础系列10 存储引擎 InnoDB 介绍
一. 概述: InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全,对比MYISAM 的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引.它的特点有如下: ...
- Android--多线程之图文混排
前言 本周一直在说Android多线程的那些事儿,本篇博客聊一聊Android开发中一个比较经典的案例,网络数据图文混排,本片博客的案例只涉及关于开启多线程访问网络数据,不涉及缓存的内容.众所周知,从 ...
- ZOJ Problem Set - 1730 Crazy Tea Party
#include<cstdio> int main(){ int T,n; scanf("%d",&T); while(T--){ scanf("%d ...
- 序言:我为什么学Perl
曾经,我熟练操作grep.awk.sed,甚至自认对sed尚算精通,我一度爱上了写脚本.但是随着写脚本的次数多了,需求复杂了,我深深的感受到shell的无奈. 例如,我多次遇到过类似下面这种恶心的需求 ...
- MySQL行转列
IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则 ...
- iOS 快速排序
一.快速排序概念及其思想 快速排序(QuickSort),又称为交换排序,是分治算法的一种,快速排序采用分治的策略. 1.分治法的基本思想: 将原问题分解为若干个规模更小但结构和原问题相似的子问题.递 ...
- Office 365平台及其价值主张
重要提示:<Office 365开发入门指南>视频教程还没有上架,目前会先公开几个小节的文字版本,让大家先睹为快,请大家转发给感兴趣的朋友,敬请留意课程的正式上架和优惠券发放通知. 从今天 ...
- WPF BitmapImage 占用资源无法释放、无法删除问题
使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放.解决方案:修改加载方式~ public static Bitma ...
- mysql函数技巧整理
IF(expr,v1,v2) expr表达式为true时返回v1,否则返回v2 IFNULL(v1,v2) 如果v1为NULL,返回v2 :v1不为NULL 则返回v1 CASE expr WHEN ...
- 元类实现ORM
1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,"Object Relational Mapping",即对象-关系映射,简称ORM. ...