`
xor_bytes
  • 浏览: 7319 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

just a scala actor demo

阅读更多
import scala.actors._
import scala.actors.Actor._
import scala.util.Random
import java.util.Date
 
object Actors{
  def main(args: Array[String]){
    val actors = new Array[Actor](250000)
    for(i <- 0 to 249999){
       actors(i) = actor{
        loop{
          react{
            case fibNum: Int => calculate(fibNum, i)  
          }
        }
      }
    }
    val random = new Random()
    for(a <- actors){
      a ! random.nextInt(25)
    }
  }
  
  def calculate(fibNum: Int, i: Int) = {
    val answer = fibonacci(fibNum)
    if((i + 1) % 1000 == 0){
      val idPlusOne = i + 1
      println("The " + fibNum + "th fibonacci number is " + answer + " (thread: " + idPlusOne + ")")
    }
    if((i + 1) % 250000 == 0){
      System.exit(0)
    }
  }
  
  def fibonacci( n: Int): Int = n match {
    case 0 => 0
    case 1 => 1
    case _ => fibonacci(n -1) + fibonacci(n - 2)
  }
}


同等功能的java实现
import java.util.Date;
import java.util.Random;
 
public class JavaThreads extends Thread{
  
  private static int THREAD_COUNT = 250000;
  private int fibNum;
  private int jid;
  
  public JavaThreads(int id, int fibNum){
    this.jid = id;
    this.fibNum = fibNum;
  }
  
  public void run(){
    int answer = fibonacci(fibNum);
    if(this.jid % 1000 == 0){
      System.out.println("The " + fibNum + "th fibonacci number is " + answer + " (thread: " + this.jid + ")");
    }
  }
  
  private int fibonacci(int i){
    if(i < 2){ return i;}
    return fibonacci(i - 1) + fibonacci(i - 2);
  }
  
  public int getJid(){
    return jid;
  }
  
  public void setJid(int jid){
    this.jid = jid;
  }
  
  public int getFibNum(){
    return fibNum;
  }
  
  public void setFibNum(int fibNum){
    this.fibNum = fibNum;
  }
  
  public static void main(String args[]){
    Date beginDate = new Date();
    long memoryBegin = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
    JavaThreads threads[] = new JavaThreads[THREAD_COUNT];
    Random random = new Random();
    for(int i = 0; i < THREAD_COUNT; i++){
      threads[i] = new JavaThreads(i, random.nextInt(25));
    }
    for(JavaThreads thread : threads){
      thread.start();
    }
    
    long memoryEnd = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
    Date endDate = new Date();
    System.out.println("Completed in " + ((endDate.getTime() - beginDate.getTime())/1000) + " seconds");
    System.out.println("Used memory: " + (memoryEnd - memoryBegin));
  }
  
}
分享到:
评论

相关推荐

    用Scala写的akka actor简单demo

    标题中的“用Scala写的akka actor简单demo”指的是一个使用Scala编程语言编写的Akka Actor系统的基本示例。Akka是轻量级、基于actor模型的框架,它用于构建高度并发、分布式和容错的应用程序。Scala是多范式编程语言...

    scalaDemo_DEMO_scalademo_scala_

    在描述中提到的"简单的scala学习demo scala learn demo"表明,这个压缩包包含了一些简洁易懂的代码示例,旨在帮助用户快速上手。 在标签中,"DEMO"通常意味着这是一个演示或实例,"scalademo"直接指向了Scala的演示...

    spark源码之scala基础语法demo

    scala是一种基于JVM的面向对象的函数编程,scala编程相对于java而言代码整洁、开发效率更高。 其中scala优点主要有: ...4:支持并发控制,Actor Model机制 5:目前比较流行的kafka,spark均由scala开发。

    scala代码demo

    这个"scala代码demo"是一个针对初学者的学习资源,旨在帮助他们掌握Scala的基础知识和编程技巧。 在Scala中,`HelloWorld`通常是最基础的示例,用于演示如何运行一个简单的程序。以下是一个典型的`HelloWorld`程序...

    play2+scala+mongodb demo示例

    【play2+scala+mongodb demo示例】是一个用于学习如何集成和使用Play Framework 2、Scala编程语言以及MongoDB数据库的实战项目。这个项目旨在帮助初学者理解这三者之间的协同工作,通过创建一个基本的CRUD(创建、...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成

    消息模式的Actor实现是响应式架构中的一个重要组件,而Akka框架则是Scala语言中实现这一模式的首选工具。 Akka是由Lightbend公司开发的一个开源框架,专门用于构建高度并发、分布式和容错的系统。它基于Actor模型,...

    scala学习demo

    "Scala学习demo"这个项目可能是一个用于教学或自我学习Scala语言的基础示例。在这个项目中,我们可以看到几个关键文件,它们在Scala开发环境中扮演着不同的角色。 1. `scala.iml`:这是一个IntelliJ IDEA项目文件,...

    scala-actors-2.10 jar包

    scala-actors-2.10 jar包,可以解决 scala-actors-2.10以上版本带来的不兼容问题

    藏经阁-Just Enough Scala for Spark.pdf

    藏经阁-Just Enough Scala for Spark.pdf

    akka-play-scala-demo:akka-播放-scala-demo

    `akka-play-scala-demo` 是一个基于 Akka、Play 和 Scala 的示例项目,它展示了如何在这些技术栈中构建高效、可扩展的Web应用程序。Akka 是一个用于构建高度并发、分布式和反应式应用的框架,而 Play 是一个用于构建...

    Artima.Actors.in.Scala.Mar.2011

    ### 关于《Scala中的Actor模型》 #### 一、引言 《Scala中的Actor模型》是一本由Philipp Haller和Frank Sommers合著的专业书籍,该书详细介绍了Scala语言中Actor模型的基础理论与实际应用。Philipp Haller不仅是...

    响应式架构++消息模式Actor实现与Scala.Akka应用集成+,沃恩·弗农+

    在《响应式架构++消息模式Actor实现与Scala.Akka应用集成+》中,作者沃恩·弗农深入探讨了如何利用Akka和Scala来构建响应式的应用程序。他可能详细讲解了以下知识点: 1. **Actor系统**:介绍Akka中的Actor系统是...

    Scala编程详解 第21讲-Scala编程详解:Actor入门 共8页.pptx

    Scala编程详解:Actor入门 Scala中的Actor模型是其并发编程的核心机制,它是基于消息传递的并发模型,旨在解决多线程编程中常见的竞态条件、死锁等问题。Actor系统允许程序在安全的环境中并行运行,通过异步消息...

    响应式架构小模式Actor实现与scala

    根据提供的文件信息,我们可以提炼出几个关键知识点,重点聚焦于“响应式架构”、“消息模式Actor”以及“Scala”和“Akka应用集成”。虽然提供的内容部分并非技术性内容,而是与电子版图书获取相关的信息,但我们仍...

    mongo-scala-drive的使用demo

    在 Scala 中与 MongoDB 进行交互,通常我们会使用 `mongo-scala-driver`,而不是 `mongo-java-driver`,因为 Scala 驱动提供了更符合 Scala 语言特性的 API 设计。本示例将详细介绍如何使用 `mongo-scala-driver` ...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成 ,沃恩·弗农

    在Scala中,创建和使用Actor非常直观,可以利用ActorSystem来启动和管理Actor,通过定义消息类型和Actor的行为来实现业务逻辑。 在响应式架构中,Actor模型扮演着关键角色,因为它们能够有效地处理异步事件,这正是...

    scala sdk scala-2.12.3

    10. **Actor模型**:Akka库是Scala中的并发和分布式计算框架,基于Actor模型,使得编写高性能、容错的应用程序变得简单。 11. **Dotty/Scala 3**:虽然Scala-2.12.3是当前版本,但Scala社区正在开发下一代Scala,即...

    scala编程基础

    ### Scala编程基础之Actor并发编程 #### 一、Scala Actor并发编程概述 ##### 1.1 什么是Scala Actor 在Scala中,Actor是一种强大的并行编程模型,它基于事件驱动和消息传递机制。通过Actor,我们可以更加简洁和...

Global site tag (gtag.js) - Google Analytics