diff --git a/src/main/java/org/syndicate_lang/actors/Actor.java b/src/main/java/org/syndicate_lang/actors/Actor.java index e158b2b..0a35f56 100644 --- a/src/main/java/org/syndicate_lang/actors/Actor.java +++ b/src/main/java/org/syndicate_lang/actors/Actor.java @@ -13,10 +13,10 @@ import java.util.logging.Logger; /** * I represent the shared execution concepts for a collection of objects; I am roughly analogous to the E concept of a Vat. */ -public class Actor { +public class Actor extends ForkJoinTask { private final static AtomicLong _count = new AtomicLong(0); private final static AtomicLong _actorId = new AtomicLong(0); - protected final static ExecutorService _executor = new ForkJoinPool( + protected final static ForkJoinPool _executor = new ForkJoinPool( Runtime.getRuntime().availableProcessors(), ForkJoinPool.defaultForkJoinWorkerThreadFactory, null, @@ -212,12 +212,14 @@ public class Actor { } } - private Runnable __runWorkItems = this::_runWorkItems; + public final Void getRawResult() { return null; } + public final void setRawResult(Void v) { } + public final boolean exec() { this._runWorkItems(); return false; } public void execute(WorkItem item) { tail.getAndSet(item).set(item); if (workItemCount.getAndIncrement() == 0) { - _executor.execute(__runWorkItems); + _executor.execute(this); } }