summaryrefslogblamecommitdiff
path: root/src/library/scala/concurrent/ExecutionContext.scala
blob: 9606c28bab4bea12346045e9c96719493a9cab20 (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                        
 



                                                                                                                 
 

                        



                                                             
                                  
  
                            
  





                                          
                                                                            
                                            
  

 
 



                     
package scala.concurrent


import java.util.concurrent.{ Executors, Future => JFuture }
import scala.util.{ Duration, Timeout }
import scala.concurrent.forkjoin.{ ForkJoinPool, RecursiveTask => FJTask, RecursiveAction, ForkJoinWorkerThread }


trait ExecutionContext {
  
  protected implicit object CanBlockEvidence extends CanBlock
  
  def execute(task: Runnable): Unit
  
  def task[T](task: => T): Task[T]
  
  def promise[T]: Promise[T]
  
  def future[T](body: => T): Future[T] = {
    val t = task(body)
    t.start()
    t.future
  }

  /** Only callable from the tasks running on the same execution context. */
  def blockingCall[T](body: Blockable[T]): T
  
}



sealed trait CanBlock