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并发编程【快速入门】的更多相关文章

  1. .Net Core WebAPI 基于Task的同步&异步编程快速入门

    .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...

  2. Scala 深入浅出实战经典 第68讲:Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

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

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  4. Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  5. Scala并发编程react、loop代码实战具体解释

    演示样例代码及凝视: //scala并发编程中的react和loop,共同特点: //通过线程存用的方式让性能有所提升. //Actor本身的运行,被actor子系统管理的时候,会有一个或者多个远程的 ...

  6. 王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解

    刚才看了一下,群里王家林老师又更新课程了,真为王老师的勤奋感到佩服,于是迫不及待的下载下来观看学习.本期讲的是关于scala并发编程的react.loop代码实战. 信息来源于 DT大数据梦工厂微信公 ...

  7. COM编程快速入门

    COM编程快速入门 COM编程快速入门 http://www.vckbase.com/index.php/wv/1642   COM是一种跨应用和语言共享二进制代码的方法.与C++不同,它提倡源代码重 ...

  8. Haskell 函数式编程快速入门【草】

    什么是函数式编程 用常规编程语言中的函数指针.委托和Lambda表达式等概念来帮助理解(其实函数式编程就是Lambda演算延伸而来的编程范式). 函数式编程中函数可以被非常容易的定义和传递. Hask ...

  9. Scala并发编程

    Scala的actor提供了一种基于事件的轻量级线程.只要使用scala.actors.Actor伴生对象的actor方法,就可以创建一个actor.它接受一个函数值/闭包做参数,一创建好就开始运行. ...

随机推荐

  1. selenium python 一些操作和定位收集

    (—)滚动条操作 python中selenium操作下拉滚动条方法汇总 selenium_webdriver(python)控制浏览器滚动条 selenium+Python(select定位) Sel ...

  2. java设定一个日期时间,加几分钟(小时或者天)后得到新的日期

    //返回的是字符串型的时间,输入的 //是String day, int x public static String addDateMinut(String day, int x){ SimpleD ...

  3. [机器学习] --- Getting Started With MachineLearning

    一. What's machine learning Machine Learning is the science of gettingcomputers to act without being  ...

  4. Python中的序列操作

    官方手册:https://docs.python.org/3.7/library/stdtypes.html#sequence-types-list-tuple-range 序列简介 序列是指按照位置 ...

  5. python if条件判断语句

    if的基本格式 if语句用来做判断,并选择要执行的语句分支.基本格式如下: if CONDITION1: code_block(1) elif CONDITION2: code_block(2) el ...

  6. 翻译:非递归CTE(已提交到MariaDB官方手册)

    本文为mariadb官方手册:非递归CTE的译文. 原文:https://mariadb.com/kb/en/library/non-recursive-common-table-expression ...

  7. 第一册:lesson seventy five。

    原文: Uncomfortable Shoes. Do you have any shoes like this? What size? Size five. What color? Black. I ...

  8. C#程序实现软件开机自动启动的两种常用方法

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法函数的示例与实例带详细注释 方法一:将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限) 1.必要引用 ...

  9. MyBatis:自定义Mapper

    在开发中有时可能需要我们自己自定义一些mapper还有些一些自定义的xml,SQL语句.其实在我们的框架中很方便.只需要在mapper中添加自定义接口,在resources中自定义一个mapper的x ...

  10. 查询文章的上下篇Sql语句

    直接开入正题 文章内容页一般都会有上一篇和下一篇的功能: 那么查询上下篇的sql语句应该怎么写呢:示例数据表:zmd_article自增主键:id当前文章id:10 肯定有人说,这简单啊id+1和id ...