• Scala并发编程【快速入门】


    1.简介

      Scala的actor提供了一种基于事件的轻量级线程。只要使用scala.actors.Actor伴生对象的actor()方法,就可以创建一个actor。它接受一个函数值/闭包做参数,一创建好就开始运行。用!()方法给actor发消息,用receive()方法从actor接收消息。receive()也可以闭包为参数,通常用模式匹配处理接收到的消息。

      scala提供了一种完全有别于java的并发实现,那就是Actor消息机制。不像java那样基于共享数据和锁的机理,scala基于消息实现并发,没有共享数据。

    2.代码快速入门

     1 package com.dingxin.entrance
     2 
     3 import scala.actors.Actor
     4 /**
     5   * scala并发编程
     6   * 基于Actor消息机制,适用于scala2.10及之前版本,新版本使用akka
     7   * Created by zhen on 2019/1/22.
     8   */
     9 
    10 object Left_Actor extends Actor{
    11   def act(){
    12     for(i <- 1 to 10){
    13       println(Thread.currentThread().getName + " step : " + i)
    14       Thread.sleep(1000)
    15     }
    16   }
    17 }
    18 object  Right_Actor extends Actor{
    19   def act(){
    20     for(i <-1 to 10){
    21       println(Thread.currentThread().getName + " step : " + i)
    22       Thread.sleep(1000)
    23     }
    24   }
    25 }
    26 object My_Actor {
    27   def main(args: Array[String]) {
    28     // 启动消息机制
    29     Left_Actor.start() // 每个都是一个线程
    30     Right_Actor.start()
    31   }
    32 }

    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
    View Code

    4.分析

      Actor消息机制使用start开启,这和java类似,每一个start都是一个线程,彼此之间基于消息实现并发编程,没有共享数据!

  • 相关阅读:
    关于域名备案申请
    meta标签中的http-equiv属性使用介绍
    WDCP3.3中多PHP版本安装方法,以及安装遇到的问题
    模拟《意尔康》网站加载动画效果
    如何提示系统所在的浏览器版本过低?
    Dedecms升级php版本{dede:field.body/}不解析,文章内容不显示
    微信weixin://xxx 分析
    SuperSlide之属性targetCell介绍
    了解JSON Web令牌(JWT)
    如何向这些CA来申请数字证书呢?
  • 原文地址:https://www.cnblogs.com/yszd/p/10308540.html
Copyright © 2020-2023  润新知