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