⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jobcoordinator.scala

📁 resetful样式的ws样例,一种面向资源的webservices服务
💻 SCALA
字号:
import scala.actors.Actorimport scala.actors.Actor._import scala.actors.OutputChannelimport scala.collection.mutable.Stackpackage com.sun.jersey.samples.mandel {class JobCoordinator(n: int) {    trait Job {        def execute: unit    }    private case object FinishedProducing    private case object Completed    private def worker = actor {        loop { react {             case j: Job =>                 j.execute                sender ! Completed            case Completed => exit        } }    }    val coordinator = actor {        var finisher: OutputChannel[Any] = null        val workers = new Stack[OutputChannel[Any]]        val jobs = new Stack[Job]        for (i <- 0 to n - 1) workers += worker        loop { react {            case j: Job =>                 if (!workers.isEmpty) (workers pop) ! j                else jobs += j            case FinishedProducing =>                finisher = sender            case Completed =>                if (!jobs.isEmpty) sender ! (jobs pop)                else workers += sender                if (workers.size == n && finisher != null) {                     workers foreach (x => x ! Completed)                    finisher ! Completed                    exit                 }        }}    }    def job (j: => unit) : unit = {        coordinator ! new Job { def execute = j }    }    def ! (j : Job) : unit = {        coordinator ! j    }    def waitForCompletion: unit = {        coordinator !? FinishedProducing match {            case Completed =>        }    }}} // package

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -