美文网首页
Scala Promise的trySuccess和tryFail

Scala Promise的trySuccess和tryFail

作者: 星辰fml | 来源:发表于2020-07-15 15:43 被阅读0次
    import scala.concurrent.Promise
    import scala.util.{Failure, Success}
    
    /**
     *
     * @author zhangap 
     * @version 1.0, 2020/7/15
     *
     */
    object TestFuture {
    
    
      def main(args: Array[String]): Unit = {
        //TODO trySuccess情况一: 如果promise还未完成,则接受传递的值,并返回true
        printPromise(testTrySuccess1())
    
        //TODO trySuccess情况二: 如果promise已经完成,则忽略传递的值,并返回false
        testTrySuccess2(printPromise)
    
        //TODO tryFailure情况一: 如果promise还未完成,则接受传递的值,并返回true
        testTryFailure1(printPromise)
        //TODO tryFailure情况一: 如果promise已经完成,则忽略传递的值,并返回false
        testTryFailure2(printPromise)
      }
    
      private def testTryFailure2(callback: Promise[Any] => Unit): Unit  = {
        val p = Promise[Any]
        p.failure(new RuntimeException("execfailure"))
        println(p.tryFailure(new RuntimeException("tryFailure")))
        callback(p)
      }
    
      private def testTryFailure1(callback: Promise[Any] => Unit): Unit  = {
        val p = Promise[Any]
        println(p.tryFailure(new RuntimeException("tryFailure")))
        callback(p)
      }
    
    
      private def testTrySuccess1(): Promise[Any] = {
        val p = Promise[Any]
        println(p.trySuccess("trySuccess"))
        p
      }
    
      private def testTrySuccess2(callback: Promise[Any] => Unit): Unit = {
        val p = Promise[Any]
        p.success("finish")
        println(p.trySuccess("trySuccess"))
        callback(p)
      }
    
      private def printPromise(promise: Promise[Any]): Unit = {
        import scala.concurrent.ExecutionContext.Implicits.global
        promise.future.onComplete {
          case Success(value) => println(s"success:$value")
          case Failure(exception) => exception.printStackTrace()
        }
      }
    
    }
    
    
    运行结果

    相关文章

      网友评论

          本文标题:Scala Promise的trySuccess和tryFail

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