`
xiefeifeihu
  • 浏览: 99316 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Akka2使用探索3(Duration 和 Deadline)

阅读更多

akka提供了两个关于时长的数据类型:Duration 和 Deadline,比如5秒钟这种含义。

Duration.Inf表示无限,Duration.MinusInf表示负无限

Deadline, 表示一个绝对的时间点,意义是最终期限,并且支持通过计算当前时间到deadline之间的差距来生成Duration

下面是使用方法:

 

import akka.util.Duration
import java.util.concurrent.TimeUnit
import akka.util.FiniteDuration
import akka.util.Deadline
import akka.dispatch.Await
import akka.dispatch.Futures
import java.util.concurrent.Callable
import akka.dispatch.Future
import akka.actor.ActorSystem

class DurationTest extends GroovyTestCase {
    def testDurationUse() {
        println new FiniteDuration(5, TimeUnit.SECONDS)
        println Duration.create(5d, TimeUnit.SECONDS)
        println Duration.create(5, "second")
        println Duration.create(5L, "second")
        println()
        println Duration.parse("5second")
        println Duration.parse("5 second")
        println Duration.parse("5 seconds")
        println Duration.parse("5seconds")
        println()
        println Duration.Inf()
        println Duration.Zero()
        println Duration.MinusInf()

    }

    def testDeadline() {
        Deadline d = Duration.create(5, "second").fromNow()
        def future = Futures.future(new Callable<String>() {
            String call() {
                println "start...";
                sleep(1000 * 60);
                println("end...");
                return "sd";
            }
        }, ActorSystem.create("test").dispatcher())

        String result = (String) Await.result(Futures.future({println "start..."; sleep(1000 * 60); println("end..."); return "sd";} as Callable, ActorSystem.create("test").dispatcher()), d.timeLeft())
        sleep(1000 * 60)
    }

    def testDeadline2() {
        Future<String> f = Futures.future(new Callable<String>() {
            public String call() {
                return "Hello" + "World";
            }
        }, ActorSystem.create("test").dispatcher());
        String result = (String) Await.result(f, Duration.create(5, "second"));
        println result
    }
}

分享到:
评论

相关推荐

    akka2.0使用方法

    Akka 是一个强大的开源工具包和运行时,用于构建高度并发、分布式和容错的Java和Scala应用程序。它基于actor模型,提供了一种轻量级、高效的方式处理并发问题。Akka 2.0 版本是其重要的里程碑,引入了许多新特性与...

    Akka 实战 akka in action v13 2014版本

    Akka是一个用于构建分布式、高并发、容错性应用...《Akka实战》一书不仅涵盖了Akka的核心概念和技术细节,还提供了大量实战案例和最佳实践,是那些希望深入了解并使用Akka构建高性能并发应用程序的开发者的重要资源。

    c#分布式框架akka范例

    在Akka.NET中,你可以使用`ActorSystem`来创建和管理Actor。Actor通过`Receive`方法定义其行为,即它如何处理不同类型的消息。 2. **消息传递**:Actor之间的通信是通过发送和接收消息进行的,这些消息可以是任何...

    akka java实现tcp远程调用

    2. Akka ActorSystem:创建和配置ActorSystem以支持远程调用。 3. 配置文件:编写`application.conf`以启用远程部署和指定TCP设置。 4. 服务端和客户端Actor:定义Actor类,实现消息处理逻辑。 5. 远程Actor引用:在...

    akka_2.10-2.314

    Akka 2.10-2.314 版本是针对Scala 2.10.x平台的特定版本,它包含了该框架从2.10到2.3.14的改进和更新。 在Akka 2.3.14中,有几个关键的知识点值得深入探讨: 1. **Actor系统**:Akka的核心是Actor模型,它是一种...

    AkkaJava PDF Doc

    文档强调了在低版本Java环境下如何使用Akka进行高效的并发编程,并且通过具体的API介绍,帮助开发者理解和掌握Akka的使用方法。尤其对那些需要在遗留系统上进行维护或升级的开发者来说,这份文档提供了宝贵的信息和...

    akka的教学

    Duration 是 Akka 中用于表示时间间隔的类,本节介绍了 Duration 的使用方法以及如何进行时间间隔的计算。 ##### 7.5 Circuit Breaker Circuit Breaker 是 Akka 中用于实现断路器模式的工具,可以防止服务请求过载...

    Akka Scala 学习高清原版pdf

    Akka是一个用Scala和Java编写的库,用于构建并发、分布式以及容错的事件驱动应用。Akka框架借鉴了Erlang的并发模型,但它是建立在JVM之上,并且提供了丰富的抽象和工具,能够简化开发工作。 标题“Akka Scala 学习...

    akka-kryo-serialization, 基于Kryo的Akka序列化.zip

    akka-kryo-serialization, 基于Kryo的Akka序列化 akka-kryo-serialization-- Scala 和Akka基于kryo的序列化程序这个库为 Scala 和Akka提供定制的基于kryo的序列化程序。 它可以用于更高效的akka远程处理。它还可以...

    Akka Cookbook azw3

    Akka Cookbook 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Mastering Akka azw3

    Mastering Akka 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    akka实例参考

    Akka 是一个强大的开源工具,主要用于构建高度并发、分布式和反应式的应用程序,主要在Java和Scala语言环境下使用。它的核心设计理念是Actor模型,这使得它能够处理大量的并发操作,同时保持系统的可扩展性和容错性...

    akka java document

    - **使用 Duration:** 如何使用 Duration 类来表示和计算时间间隔。 **7.5 断路器** - **断路器概念:** 断路器是一种用于保护系统的机制。 - **实现断路器:** 如何使用 Akka 的断路器功能。 **7.6 Akka 扩展** ...

    Akka开发库文档

    Akka是一个基于Scala语言的开发框架,由Jonas Boner主持开发,旨在为Java程序员提供...通过以上的知识点,可以全面了解Akka开发库文档所涉及的技术细节和概念,为Java或其他JVM语言开发者使用Akka框架提供有力支持。

    Learning Akka

    《Learning Akka》这本书是关于Akka框架的深入学习指南,它主要面向那些希望掌握分布式系统设计和并行计算技术的开发人员。Akka是一个用Scala语言构建的高性能、容错的工具包,广泛应用于Java和Scala环境中。本书...

    Learning Akka(PACKT,2015)

    Akka is a distributed computing toolkit that enables developers to build correct concurrent and distributed applications using Java and Scala with ease, applications that scale across servers and ...

    Akka.net分布式数据传输

    为了实现分布式数据传输,Akka.NET 使用了 Akka.Remote 和 Akka.Cluster。Akka.Remote 负责节点间的通信,它通过底层的传输协议(如 TCP 或 UDP)实现 Actor 系统之间的消息传递。Akka.Cluster 提供了一组工具,用于...

    Akka Java文档

    Akka 提供了一种易于理解和使用的模型来处理现代软件系统中的高并发需求。随着硬件的发展,多核处理器已经成为标准配置,因此如何有效地利用这些核心成为了一个重要的问题。Akka 通过 Actor 模型来实现这一点,Actor...

Global site tag (gtag.js) - Google Analytics