如何实现自定义简单的“未来”?

时间:2015-08-29 12:26:08

标签: scala future

我正在尝试实现一个简单的自定义public static void main(String[] args) { Scanner sc = new Scanner(System.in); long num1=sc.nextLong(); long count=(num1 & (num1- 1)); if(count == 0l) { System.out.println("power of two"); } } ,它类似于Future,但更简单。

我定义了一个特征:

scala.concurrent.Future

我可以根据这些API做这些事情:

trait MyFuture[+T] {
  def map[K](f: T => K): MyFuture[K]
  def flatMap[K](f: T => MyFuture[K]): MyFuture[K]
  def recover[K](f: Throwable => K): MyFuture[K]
  def recoverWith[K](f: Throwable => MyFuture[K]): MyFuture[K]
}

object MyFuture {
  def apply[T](body: => T): MyFuture[T] = ???
}

object MyAwait {
  def result[T](myFuture: MyFuture[T], atMost: Int /*mills*/): T = ???
}

不幸的是,我找不到实现它的方法。我调查了val future = MyFuture(3).map(_+1).flatMap(x=>MyFuture(x*x)) val result = MyAwait.result(future,100) // result: 16 ,但这对于学习来说太复杂了

0 个答案:

没有答案