zoukankan      html  css  js  c++  java
  • 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都是一个线程,彼此之间基于消息实现并发编程,没有共享数据!

  • 相关阅读:
    DataTable.AcceptChanges方法有何用处
    ItemArray DataRow对象的RowState和DataRowVersion属性特点
    C#中MessageBox用法大全(附效果图)
    tp5数据库操作 模型层
    07-11 Linux命令操作
    Thinkphp模板标签if和eq的区别和比较
    TP3.2单字母函数
    0629-TP整理四(create(),success(),error(),U())
    0627-TP整理三(对表的操作,数据的显示)
    0626-TP整理二(调试模式,空操作,跨控制器调用,跨方法跳转--redirect(),框架语法,创建model模型)
  • 原文地址:https://www.cnblogs.com/yszd/p/10308540.html
Copyright © 2011-2022 走看看