【发布时间】:2016-06-02 00:56:24
【问题描述】:
我试图了解这两种方法在功能方面的区别。
class MyService (blockService: BlockService){
def doSomething1(): Future[Boolean] = {
//do
//some non blocking
//stuff
val result = blockService.block()
Future.successful(result)
}
def doSomething2(): Future[Boolean] = {
Future{
//do
//some non blocking
//stuff
blockService.block()
}
}
}
据我了解,两者之间的区别在于哪个线程是将被阻塞的实际线程。
所以如果有一个线程:thread_1 执行something1,thread_1 将被阻塞,而如果一个thread_1 执行something2,一个新线程将运行它-thread_2,而thread_2 将被阻塞被屏蔽了。
这是真的吗?
如果是这样,那么就没有编写此代码的首选方法了吗?如果我不在乎最终会阻塞哪个线程,那么最终结果将是相同的。
dosomething1 写这段代码的方式似乎很奇怪,我会选择dosomething2。
有意义吗?
【问题讨论】:
标签: scala asynchronous playframework future