From bb3d822988e105671d9b3cea09b51ca55967d432 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 5 Dec 2020 00:01:28 +0100 Subject: [PATCH] Use a work stealing pool --- src/main/java/org/syndicate_lang/actors/Actor.java | 2 +- .../org/syndicate_lang/actors/example/example2/Main.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/syndicate_lang/actors/Actor.java b/src/main/java/org/syndicate_lang/actors/Actor.java index 7996bbb..c1474dc 100644 --- a/src/main/java/org/syndicate_lang/actors/Actor.java +++ b/src/main/java/org/syndicate_lang/actors/Actor.java @@ -12,7 +12,7 @@ public class Actor implements Executor { private final static ThreadLocal _currentActor = new ThreadLocal<>(); private final static AtomicLong _count = new AtomicLong(0); private final static AtomicLong _actorId = new AtomicLong(0); - protected final static ExecutorService _executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + protected final static ExecutorService _executor = Executors.newWorkStealingPool(); protected final static ScheduledExecutorService _scheduledExecutor = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors()); private final String _name; diff --git a/src/test/java/org/syndicate_lang/actors/example/example2/Main.java b/src/test/java/org/syndicate_lang/actors/example/example2/Main.java index df82001..f0bb0e1 100644 --- a/src/test/java/org/syndicate_lang/actors/example/example2/Main.java +++ b/src/test/java/org/syndicate_lang/actors/example/example2/Main.java @@ -5,13 +5,15 @@ import org.syndicate_lang.actors.Actor; import java.util.ArrayList; import java.util.List; +import static java.lang.Integer.parseInt; + public class Main implements IForwarder { private List _actors; public static void main(String[] args) throws InterruptedException { Actor.convenientLogging(); - Actor.forObject(new Main(1000000, 10)).syncVoid(Main::boot).await(); + Actor.forObject(new Main(parseInt(args[0]), parseInt(args[1]))).syncVoid(Main::boot).await(); Actor.awaitAll(); } @@ -26,6 +28,7 @@ public class Main implements IForwarder { } public void boot() { + Actor.log().info("Available processors: " + Runtime.getRuntime().availableProcessors()); this._actors = new ArrayList<>(); IForwarder me = Actor.ref(this).asyncProxy(IForwarder.class); for (int i = 0; i < _nActors; i++) {