相关疑难解决方法(0)

什么是Java中的"SAM类型"?

阅读Java-8规范,我不断看到对"SAM类型"的引用.我无法找到明确解释这是什么.

什么是SAM类型以及什么是何时可以使用的示例场景?

java lambda java-8

116
推荐指数
1
解决办法
3万
查看次数

延迟功能执行

什么是在Scala中延迟函数执行的最简单方法,比如JavaScript setTimeout?理想情况下,每次延迟执行都不会产生线程,即顺序执行.我能找到的最接近的是Akka的Scheduler,但这太过分了.

为了我的测试目的,我打开了数千个连接,然后他们在10秒钟内获得响应.在node.js中,它看起来像:

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  setTimeout(function() {res.end('Hello World\n');}, 10000 );
}).listen(8080, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)

但是最接近的Scala版本会做同样的事情吗?我不在乎res.end是在多个线程中执行还是在一个线程中排队.

scala multiplexing

19
推荐指数
1
解决办法
3万
查看次数

如何安全地对 Scala Future 进行重试?

我有一些启动“缓慢”进程的代码,我将其包装在 Future 中。如果出现问题,我想慢慢循环并在暂停后重试——无限期地。有点像这样:(我知道最终会有人介入并解决问题)

  def doSomething():Unit = {
    aFutureThing().onComplete { 
      case Success(s) => println("Success: "+s)
      case Failure(x) =>
        // Take some (hopefully) corrective action here, call for help, etc.
        Thread.sleep(1000) // pause a bit
        doSomething() // and try again...
    }
  }
  doit()
Run Code Online (Sandbox Code Playgroud)

当调用 onComplete 回调时, doSomething() 是否仍在堆栈中,或者是否因为我们在 Future 执行慢速任务 (aFutureThing) 时返回而被弹出?doSomething 的递归调用(最终)会破坏堆栈/OutOfMemory 或其他东西吗?如果是这样......是否有更安全的方法来重试 Future?

scala future

4
推荐指数
1
解决办法
5653
查看次数

标签 统计

scala ×2

future ×1

java ×1

java-8 ×1

lambda ×1

multiplexing ×1