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

  • 相关阅读:
    Kafka 生产者 自定义分区策略
    同步互斥
    poj 1562 Oil Deposits(dfs)
    poj 2386 Lake Counting(dfs)
    poj 1915 KnightMoves(bfs)
    poj 1664 放苹果(dfs)
    poj 1543 Perfect Cubes (暴搜)
    poj 1166 The Clocks (暴搜)
    poj 3126 Prime Path(bfs)
    处理机调度
  • 原文地址:https://www.cnblogs.com/yszd/p/10308540.html
Copyright © 2011-2022 走看看