Future

作者: simples | 来源:发表于2019-03-28 10:30 被阅读0次

Future知识点讲解

  • 因为刚开始接触Future,这里参考一片文章,简单的只放链接好了,因为没有具体研究,后面讲些自己的心得。
https://www.jianshu.com/p/f858d31877c3

Future 心得

  • 执行情况
    在Future创建的时候就会利用上下文或者执行的线程池执行Future中的代码块,而不是要等到调用的时候,这个经过代码测试。
  • 调用future的回调函数,回调函数的执行线程是执行Future代码的线程池。

-上代码

  @Test
  def futureCreateTest(): Unit ={
    println("time1: " +  System.nanoTime())

    println("thread1: " + Thread.currentThread().getName)
    val f = Future{
      println("thread2: " + Thread.currentThread().getName)

      println("time2: " + System.nanoTime())
      Thread.sleep(2000)
      println("time3: " +  System.nanoTime())
      1 + 1
    }

    println("thread3: " + Thread.currentThread().getName)

    println("time4: " +  System.nanoTime())
    Thread.sleep(1000)

    val result = Await.result(f, 1 second)
    println(result)

    Thread.sleep(5000)

    f.onComplete{
      case Success(value) =>
        println(s"Get callback success, meaning value = $value")
        println(s"callback function's thread: ${Thread.currentThread().getName}")
      case Failure(exception) => exception.printStackTrace()
    }

    // 这里主线程休息5s保证在程序推出前,回调函数执行完毕。
    Thread.sleep(5000)

执行情况

time1: 91580332028084
thread1: main
thread3: main
time4: 91580408190989
thread2: ForkJoinPool-1-worker-5
time2: 91580408607023
time3: 91582408847026
2
Get callback success, meaning value = 2
callback function's thread: ForkJoinPool-1-worker-5

说明:只是参考下方链接自己做了思考然后动手做了验证,因为时间仓促,可能有不足或者失误地方,读者可以指出,后期有时间将会更新。
参考链接:https://www.jianshu.com/p/f858d31877c3

相关文章

网友评论

      本文标题:Future

      本文链接:https://www.haomeiwen.com/subject/isbfbqtx.html