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

  • 相关阅读:
    2017 北京商改住政策
    python3 进程和线程(二)
    python3 pymysql
    SQL基本操作
    python3 paramiko
    python3 classmethod
    python3 property
    LVS负载均衡
    flume介绍及应用
    关系型数据库和非关系型数据库介绍及优劣势比较
  • 原文地址:https://www.cnblogs.com/yszd/p/10308540.html
Copyright © 2011-2022 走看看