作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
像下面这样实现的 future 是否有新线程?显然不是(见下面的输出)。为什么?如果我希望我的代码在新线程上运行,我应该怎么做?
package MyTest
import com.twitter.util._
import scala.language.postfixOps
object Test {
def test1 = Future {
println("BeforeTest", Thread.currentThread())
Thread.sleep(5000)
println("AfterTest", Thread.currentThread())
}
def test2 = test1 onSuccess { case _ => println("Future on success") }
def main(args: Array[String]): Unit = {
println("main", Thread.currentThread())
test2
println("main123", Thread.currentThread())
}
}
输出:
(main,Thread[run-main-0,5,run-main-group-0])
(BeforeTest,Thread[run-main-0,5,run-main-group-0])
(AfterTest,Thread[run-main-0,5,run-main-group-0])
成功的 future
(main123,Thread[run-main-0,5,run-main-group-0])
最佳答案
您使用的是 Twitter future ,而不是 Scala future 。默认情况下,Twitter future 不是多线程的。你必须使用 FuturePool (使用您选择的线程池将其传递给 ExecutorService)
未经测试的示例(我希望足够简单:)):
val executor = Executors.newFixedThreadPool(4)
val pool = FuturePool(executor)
def test1 = pool {
println("BeforeTest", Thread.currentThread())
Thread.sleep(5000)
println("AfterTest", Thread.currentThread())
}
def test2 = test1 onSuccess { case _ => println("Future on success") }
def main(args: Array[String]): Unit = {
println("main", Thread.currentThread())
test2
println("main123", Thread.currentThread())
executor.shutdown()
}
关于scala - Future 是否有新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500396/
嘿。本周的一个教程,其中一个问题要求通过使用其他函数 formatLine 和 formatList 创建一个函数 formatLines,以格式化行列表。 我的代码是这样的; type Line =
我是一名优秀的程序员,十分优秀!