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 );

/**
* Creates an {@link ExecutorService} that does works-stealing - 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
* Creates an {@link ExecutorService} that does works-stealing with asyncMode set to true - read more about this in {@link ForkJoinPool}
* <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}.
Expand Down
Expand Up @@ -79,7 +79,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
}

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

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

@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 ) );
}
Expand Down
Expand Up @@ -65,9 +65,9 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
}

@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
Expand Down
Expand Up @@ -107,7 +107,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism )
}

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

0 comments on commit 5dc9053

Please sign in to comment.