added custom managed actor scheduler
This commit is contained in:
parent
0ad6151dda
commit
e0591005ed
2 changed files with 61 additions and 0 deletions
61
kernel/src/main/scala/ManagedActorScheduler.scala
Normal file
61
kernel/src/main/scala/ManagedActorScheduler.scala
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2009 Scalable Solutions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package se.scalablesolutions.akka.kernel
|
||||||
|
|
||||||
|
import net.lag.logging.Logger
|
||||||
|
|
||||||
|
import java.util.concurrent.Executors
|
||||||
|
|
||||||
|
import scala.actors.{FJTaskScheduler2, Scheduler, IScheduler, Actor}
|
||||||
|
|
||||||
|
// FIXME: add managing interface to this class using JMX
|
||||||
|
// FIXME: configure one instance per GenericServer
|
||||||
|
object ManagedActorScheduler extends Logging {
|
||||||
|
@volatile private var isRegistered = false
|
||||||
|
private var threadPoolSize = 10
|
||||||
|
|
||||||
|
def register = synchronized {
|
||||||
|
if (!isRegistered) {
|
||||||
|
Scheduler.impl match {
|
||||||
|
case fj: FJTaskScheduler2 =>
|
||||||
|
fj.snapshot
|
||||||
|
fj.shutdown
|
||||||
|
case _ =>
|
||||||
|
}
|
||||||
|
|
||||||
|
Scheduler.impl = {
|
||||||
|
val threadPool = Executors.newFixedThreadPool(threadPoolSize)
|
||||||
|
new IScheduler {
|
||||||
|
def execute(fun: => Unit): Unit = threadPool.execute(new Runnable {
|
||||||
|
def run = {
|
||||||
|
try {
|
||||||
|
fun
|
||||||
|
} catch {
|
||||||
|
case e => log.error("Actor scheduler", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
def execute(task: Runnable) = es.execute(new Runnable {
|
||||||
|
def run = {
|
||||||
|
try {
|
||||||
|
task.run
|
||||||
|
} catch {
|
||||||
|
case e => log.error("Actor scheduler", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
def tick(a: Actor): Unit = {}
|
||||||
|
def shutdown: Unit = { threadPool.shutdown }
|
||||||
|
def onLockup(handler: () => Unit): Unit = {}
|
||||||
|
def onLockup(millis: Int)(handler: () => Unit): Unit = {}
|
||||||
|
def printActorDump: Unit = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isRegistered = true
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
lib/jersey-client-1.1.0-ea.jar
Normal file
BIN
lib/jersey-client-1.1.0-ea.jar
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue