diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-12-03 12:03:16 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-12-03 12:03:16 +0000 |
commit | 62601656c3902897d3db538e855aa008313f899b (patch) | |
tree | 970f5d5ff96d796a89c370b8c3f61044ebfe9570 /src | |
parent | 38625cc96c837908a129cb2c378a93f8e31eface (diff) | |
download | scala-62601656c3902897d3db538e855aa008313f899b.tar.gz scala-62601656c3902897d3db538e855aa008313f899b.tar.bz2 scala-62601656c3902897d3db538e855aa008313f899b.zip |
Added Java property to explicitly enable/disabl...
Added Java property to explicitly enable/disable fork-join pool for
actors. By default it is enabled only on 1.6 and 1.7 JDKs from Sun.
Diffstat (limited to 'src')
-rw-r--r-- | src/actors/scala/actors/Scheduler.scala | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/actors/scala/actors/Scheduler.scala b/src/actors/scala/actors/Scheduler.scala index e4c3f76d28..47abf9477e 100644 --- a/src/actors/scala/actors/Scheduler.scala +++ b/src/actors/scala/actors/Scheduler.scala @@ -15,7 +15,7 @@ import scheduler.{DelegatingScheduler, ForkJoinScheduler, ResizableThreadPoolSch /** * The <code>Scheduler</code> object is used by <code>Actor</code> to - * execute tasks of an execution of an actor. + * execute tasks of an actor execution. * * @author Philipp Haller */ @@ -24,12 +24,24 @@ object Scheduler extends DelegatingScheduler { Debug.info("initializing "+this+"...") def makeNewScheduler: IScheduler = { - // test on which JVM we are running - val jvmVersion = System.getProperty("java.version") - val jvmVendor = System.getProperty("java.vm.vendor") - val sched = if (jvmVersion.indexOf("1.5") != -1 || - jvmVendor.indexOf("IBM") != -1) { - // on IBM J9 1.6 do not use ForkJoinPool + val useForkJoin = try { + val fjProp = System.getProperty("actors.enableForkJoin") + if (fjProp != null) + fjProp.equals("true") + else { + val javaVersion = System.getProperty("java.version") + val jvmVendor = System.getProperty("java.vm.vendor") + Debug.info(this+": java.version = "+javaVersion) + Debug.info(this+": java.vm.vendor = "+jvmVendor) + (javaVersion.indexOf("1.6") != -1 || + javaVersion.indexOf("1.7") != -1) && + // on IBM J9 1.6 do not use ForkJoinPool + (jvmVendor.indexOf("Sun") != -1) + } + } catch { + case se: SecurityException => false + } + val sched = if (!useForkJoin) { val s = new ResizableThreadPoolScheduler(false) s.start() s |