操作演示
简单上手
转换需要额外的包
1
2
3
4
5
|
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-java8-compat_2.12</artifactId>
<version>0.8.0</version>
</dependency>
|
主要是 FutureConverters 的 .toScala() .toJava() 两个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.time.{Duration => jduration}
val request = HttpRequest.newBuilder.uri(URI.create("https://www.baidu.com/"))
.timeout(jduration.ofMinutes(2))
.build
val java8Future: CompletableFuture[HttpResponse[String]] = HttpClient.newBuilder
.connectTimeout(jduration.ofSeconds(3)).build
.sendAsync(request, HttpResponse.BodyHandlers.ofString)
println("java版-- Future -- ready")
import scala.concurrent.ExecutionContext.Implicits.global
// 切换为scala版的 future
val future01: Future[HttpResponse[String]] = FutureConverters.toScala(java8Future)
val future03: Future[Int] = future01 map { resp =>
val str = resp.body()
println(str)
"产生-- future02"
} map { str =>
println("产生-- future03")
666
}
// val value: CompletionStage[Int] = FutureConverters.toJava(future03)
val num: Int = Await.result(future03, Duration.create(4, "second"))
println(num)
println("main -- done")
|
文章作者
duansheli
上次更新
2019-12-25
(325c7b3)