Advertisement
Guest User

ActorStarvation

a guest
Jul 7th, 2010
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.91 KB | None | 0 0
  1. import scala.actors.Actor
  2. import scala.actors._
  3. import scala.actors.Actor._
  4.  
  5. import java.util.concurrent.CountDownLatch
  6.  
  7. object ScalaActorStarvation {
  8.    
  9.    def main(args: Array[String]) {
  10.       val iterations = 30
  11.         for (i <- 1 to iterations) {
  12.             new ParallelTesting() ! ""+i
  13.         }
  14.    }
  15. }
  16.    
  17.  
  18. class DoStuffActor() extends Actor {
  19.     start()
  20.    
  21.     def act() {
  22.             loop {  react {
  23.                 case f:(()=>Unit) => System.err.println("do some async shit")
  24.                                      Thread.sleep(100)
  25.                                      f()
  26.                                      
  27.          
  28.         }}  
  29.      }
  30. }
  31.  
  32. class ParallelTesting extends Actor  {
  33.    
  34.     start()
  35.    
  36.     def act() {
  37.         loop {  react {
  38.         case str:String =>   val latch = new CountDownLatch(1)
  39.                              new DoStuffActor() ! ( ()=>{ println("someCode " + str)
  40.                                                          latch.countDown()
  41.                                                         } )
  42.                              latch.await()
  43.                              this.exit
  44.               }
  45.             }
  46.         }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement