我想了解两种方法之间的区别,在功能方面。玩 - 如何包装与期货的阻止代码
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()
}
}
}
我的理解之间的区别2是哪个线程是实际的线程将被阻止。
所以,如果有一个线程:thread_1即执行something1
,thread_1将被阻止的一个,而如果一个thread_1执行something2
一个新的线程将运行它 - thread_2,并thread_2是被封锁的一个。
这是真的吗?
如果是这样,比没有真正的首选方式来编写此代码?如果我不关心哪个线程最终会被阻塞,那么最终结果将是相同的。 dosomething1
似乎是一个奇怪的方式来写这段代码,我会选择dosomething2
。
有意义吗?
是的,如果我使用2个不同的执行上下文,它是有意义的,但如果不是,这真的意味着什么,对吧? – Tomer