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

                        
 
                                                                      


                                                                                                                 
 

                        

                                                             
                                       
  
                            
  


                                                                   
 
                                                                            
                                            
  

 
 


                     
package scala.concurrent


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


trait ExecutionContext {
  
  protected implicit object CanBlockEvidence extends CanBlock
  
  def execute(runnable: Runnable): Unit
  
  def promise[T]: Promise[T]
  
  def future[T](body: Callable[T]): Future[T] = future(body.call())
  
  def future[T](body: => T): Future[T]

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


sealed trait CanBlock