src/Pure/Concurrent/simple_thread.scala
changeset 56730 e723f041b6d0
parent 56707 aa4631879df8
child 56770 e160ae47db94
equal deleted inserted replaced
56729:1da2272a06a4 56730:e723f041b6d0
     7 
     7 
     8 package isabelle
     8 package isabelle
     9 
     9 
    10 
    10 
    11 import java.lang.Thread
    11 import java.lang.Thread
       
    12 import java.util.concurrent.{Callable, Future => JFuture}
       
    13 
       
    14 import scala.collection.parallel.ForkJoinTasks
    12 
    15 
    13 
    16 
    14 object Simple_Thread
    17 object Simple_Thread
    15 {
    18 {
    16   /* pending interrupts */
    19   /* pending interrupts */
    38   {
    41   {
    39     val result = Future.promise[A]
    42     val result = Future.promise[A]
    40     val thread = fork(name, daemon) { result.fulfill_result(Exn.capture(body)) }
    43     val thread = fork(name, daemon) { result.fulfill_result(Exn.capture(body)) }
    41     (thread, result)
    44     (thread, result)
    42   }
    45   }
       
    46 
       
    47 
       
    48   /* thread pool */
       
    49 
       
    50   lazy val default_pool = ForkJoinTasks.defaultForkJoinPool
       
    51 
       
    52   def submit_task[A](body: => A): JFuture[A] =
       
    53     default_pool.submit(new Callable[A] { def call = body })
    43 }
    54 }
    44 
    55