Skip to content

Commit

Permalink
Refactor JobScheduler's work stealing executor with async mode factory
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewkerr9000 committed Sep 11, 2018
1 parent 971757b commit 5dc9053
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 9 deletions.
Expand Up @@ -50,10 +50,11 @@ public interface JobScheduler extends Lifecycle, AutoCloseable
ExecutorService workStealingExecutor( Group group, int parallelism ); ExecutorService workStealingExecutor( Group group, int parallelism );


/** /**
* Creates an {@link ExecutorService} that does works-stealing - read more about this in {@link ForkJoinPool} * Creates an {@link ExecutorService} that does works-stealing with asyncMode set to true - read more about this in {@link ForkJoinPool}
* @param asyncMode Defaults to false. A value of true may be more suitable for systems where worker threads only process event-style asynchronous tasks * <p>
* This may be more suitable for systems where worker threads only process event-style asynchronous tasks.
*/ */
ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ); ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism );


/** /**
* Expose a group scheduler as a {@link java.util.concurrent.ThreadFactory}. * Expose a group scheduler as a {@link java.util.concurrent.ThreadFactory}.
Expand Down
Expand Up @@ -79,7 +79,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
} }


@Override @Override
public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism )
{ {
return null; return null;
} }
Expand Down
Expand Up @@ -58,7 +58,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
} }


@Override @Override
public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism )
{ {
return executor; return executor;
} }
Expand Down
Expand Up @@ -118,7 +118,12 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
} }


@Override @Override
public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism )
{
return workStealingExecutor( group, parallelism, true );
}

private ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode )
{ {
return workStealingExecutors.computeIfAbsent( group, g -> createNewWorkStealingExecutor( g, parallelism, asyncMode ) ); return workStealingExecutors.computeIfAbsent( group, g -> createNewWorkStealingExecutor( g, parallelism, asyncMode ) );
} }
Expand Down
Expand Up @@ -65,9 +65,9 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
} }


@Override @Override
public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism )
{ {
return delegate.workStealingExecutor( group, parallelism, asyncMode ); return delegate.workStealingExecutorAsyncMode( group, parallelism );
} }


@Override @Override
Expand Down
Expand Up @@ -107,7 +107,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
} }


@Override @Override
public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism )
{ {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
Expand Down

0 comments on commit 5dc9053

Please sign in to comment.