Mor*_*mer 9 concurrency time scala duration java-8
我正在为该scala.concurrent.duration.Duration课阅读scala文档,我刚刚发现它始于:
这个类并不是时间的通用表示,它是针对scala.concurrent的需求进行优化的.
为什么这个陈述的含义?什么是更好的选择?
我想我对此负有部分责任。
这里的普遍问题是时间系统很难。真的,真的,真的很难。
致力于标准化期货的Akka开发人员需要一种结构来描述两个“匿名”时间点之间的长度,以实现其功能。Duration旨在解决此特定要求。
我担心的是,人们可能会开始使用这种与时间相关的类来处理某些事情,而该类并非旨在使我们陷入类似于java.util.Date/ java.util.Calendar(并非完全因为其Duration实际用例)的麻烦情况,在这种情况下,很多人会误用它。某种 scala.time从未想过的东西。
这就是为什么它有此注释并被打包到scala.concurrent.duration而不是例如scala.time。
我期待java.timeJava 8附带的软件包。将来可能会对此进行标准化,这将稍微提高互操作性,并具有为更广泛的用例设计的额外好处。(不过,Scala使用Java 8作为基准可能要花很长时间……)
根据您的需要,时间可以以多种方式表示。我个人用过:
\n\nLong\xe2\x80\x94 很多工具直接拿它更新:java.time.*感谢@Vladimir Matveev
该包由《Joda Time》的作者(Stephen Colebourne)设计。他说设计得更好。
java.util.Date
单独的类层次结构:
\n\ntrait Time\ncase class ExactTime(timeMs:Long) extends Time\ncase object Now extends Time\ncase object ASAP extends Time\ncase class RelativeTime(origin:Time, deltaMs:Long) extends Time\nRun Code Online (Sandbox Code Playgroud)订购时间表示:
\n\ncase class History[T](events:List[T])\nRun Code Online (Sandbox Code Playgroud)模型时间。一旦我有一个全局Timer对象var currentTime:Long:
object Timer {\n private var currentTimeValue:Long\n def currentTimeMs = currentTimeValue\n def currentTimeMs_=(newTime:Long) { ... some checks and notifications}\n def pseudoRandom:Double = ...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在节目中的每一个地方我都打电话Timer.currentTimeMs来争取时间。它允许编写具有受控时间偏移的确定性测试。(小心全局变量!现在我更喜欢使用单独的实例Timer来避免并发问题。)
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |