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系统的基本示例。Akka是轻量级、基于actor模型的框架,它用于构建高度并发、分布式和容错的应用程序。Scala是多范式编程语言...
在描述中提到的"简单的scala学习demo scala learn demo"表明,这个压缩包包含了一些简洁易懂的代码示例,旨在帮助用户快速上手。 在标签中,"DEMO"通常意味着这是一个演示或实例,"scalademo"直接指向了Scala的演示...
scala是一种基于JVM的面向对象的函数编程,scala编程相对于java而言代码整洁、开发效率更高。 其中scala优点主要有: ...4:支持并发控制,Actor Model机制 5:目前比较流行的kafka,spark均由scala开发。
这个"scala代码demo"是一个针对初学者的学习资源,旨在帮助他们掌握Scala的基础知识和编程技巧。 在Scala中,`HelloWorld`通常是最基础的示例,用于演示如何运行一个简单的程序。以下是一个典型的`HelloWorld`程序...
【play2+scala+mongodb demo示例】是一个用于学习如何集成和使用Play Framework 2、Scala编程语言以及MongoDB数据库的实战项目。这个项目旨在帮助初学者理解这三者之间的协同工作,通过创建一个基本的CRUD(创建、...
消息模式的Actor实现是响应式架构中的一个重要组件,而Akka框架则是Scala语言中实现这一模式的首选工具。 Akka是由Lightbend公司开发的一个开源框架,专门用于构建高度并发、分布式和容错的系统。它基于Actor模型,...
"Scala学习demo"这个项目可能是一个用于教学或自我学习Scala语言的基础示例。在这个项目中,我们可以看到几个关键文件,它们在Scala开发环境中扮演着不同的角色。 1. `scala.iml`:这是一个IntelliJ IDEA项目文件,...
scala-actors-2.10 jar包,可以解决 scala-actors-2.10以上版本带来的不兼容问题
藏经阁-Just Enough Scala for Spark.pdf
`akka-play-scala-demo` 是一个基于 Akka、Play 和 Scala 的示例项目,它展示了如何在这些技术栈中构建高效、可扩展的Web应用程序。Akka 是一个用于构建高度并发、分布式和反应式应用的框架,而 Play 是一个用于构建...
### 关于《Scala中的Actor模型》 #### 一、引言 《Scala中的Actor模型》是一本由Philipp Haller和Frank Sommers合著的专业书籍,该书详细介绍了Scala语言中Actor模型的基础理论与实际应用。Philipp Haller不仅是...
在《响应式架构++消息模式Actor实现与Scala.Akka应用集成+》中,作者沃恩·弗农深入探讨了如何利用Akka和Scala来构建响应式的应用程序。他可能详细讲解了以下知识点: 1. **Actor系统**:介绍Akka中的Actor系统是...
Scala编程详解:Actor入门 Scala中的Actor模型是其并发编程的核心机制,它是基于消息传递的并发模型,旨在解决多线程编程中常见的竞态条件、死锁等问题。Actor系统允许程序在安全的环境中并行运行,通过异步消息...
根据提供的文件信息,我们可以提炼出几个关键知识点,重点聚焦于“响应式架构”、“消息模式Actor”以及“Scala”和“Akka应用集成”。虽然提供的内容部分并非技术性内容,而是与电子版图书获取相关的信息,但我们仍...
在 Scala 中与 MongoDB 进行交互,通常我们会使用 `mongo-scala-driver`,而不是 `mongo-java-driver`,因为 Scala 驱动提供了更符合 Scala 语言特性的 API 设计。本示例将详细介绍如何使用 `mongo-scala-driver` ...
在Scala中,创建和使用Actor非常直观,可以利用ActorSystem来启动和管理Actor,通过定义消息类型和Actor的行为来实现业务逻辑。 在响应式架构中,Actor模型扮演着关键角色,因为它们能够有效地处理异步事件,这正是...
10. **Actor模型**:Akka库是Scala中的并发和分布式计算框架,基于Actor模型,使得编写高性能、容错的应用程序变得简单。 11. **Dotty/Scala 3**:虽然Scala-2.12.3是当前版本,但Scala社区正在开发下一代Scala,即...
### Scala编程基础之Actor并发编程 #### 一、Scala Actor并发编程概述 ##### 1.1 什么是Scala Actor 在Scala中,Actor是一种强大的并行编程模型,它基于事件驱动和消息传递机制。通过Actor,我们可以更加简洁和...