scala - Link promise to another -


i'm reading scala.concurrent.impl.promise , confused concept "link defaultpromise another". understand 'prevent memory leak' part, don't know how write example current state of defaultpromise defaultpromise.

when defaultpromise first created, state nil , list grows keep appending flatmap it. under circumstances branch

case dp: defaultpromise[_] => dp.asinstanceof[defaultpromise[s]].linkrootof(p) 

in future.flatmap called?

  test("default promise linking") {     //f1.getstate === nil     val f1 = future {thread.sleep(200000); 2}      //f1.getstate === list(callbackrunner1)     f1.flatmap(x => future {thread.sleep(200000); 4})     //f1.getstate === list(callbackrunner2, callbackrunner1)     f1.flatmap(y => future {thread.sleep(200000); 3})      thread.sleep(30000000)   } 

take example:

val f1 = future {thread.sleep(200000); 2} val f2 = f1.flatmap(x => {     val f3 = future {thread.sleep(200000); 4}     f3 }) 

f1 , f3 of course not share same state - 1 resolves 2 other 4. when f1 completes, handler (f(v)) create f3 , match the case confused about. then, f2 (p in flatmap) linked f3 share same state.


Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -