Class SchedulingStrategy
- java.lang.Object
-
- org.apache.maven.surefire.junitcore.pc.SchedulingStrategy
-
- All Implemented Interfaces:
Destroyable
- Direct Known Subclasses:
AbstractThreadPoolStrategy
,InvokerStrategy
public abstract class SchedulingStrategy extends java.lang.Object implements Destroyable
Specifies the strategy of scheduling whether sequential, or parallel. The strategy may use a thread pool shared with other strategies.
One instance of strategy can be used just by oneScheduler
.
The strategy is scheduling tasks inschedule(Runnable)
and awaiting them completed infinished()
. Both methods should be used in one thread.- Since:
- 2.16
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.atomic.AtomicBoolean
canSchedule
private ConsoleStream
logger
-
Constructor Summary
Constructors Modifier Constructor Description protected
SchedulingStrategy(ConsoleStream logger)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected boolean
canSchedule()
protected boolean
disable()
Persistently disables this strategy.protected abstract boolean
finished()
Waiting for scheduled tasks to finish.protected abstract boolean
hasSharedThreadPool()
protected void
logQuietly(java.lang.Throwable t)
protected abstract void
schedule(java.lang.Runnable task)
Schedules tasks ifcanSchedule()
.protected void
setDefaultShutdownHandler(Scheduler.ShutdownHandler handler)
protected abstract boolean
stop()
Stops scheduling new tasks (e.g.protected boolean
stopNow()
Stops scheduling new tasks andinterrupts
running tasks (e.g.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.maven.surefire.junitcore.pc.Destroyable
destroy
-
-
-
-
Field Detail
-
canSchedule
private final java.util.concurrent.atomic.AtomicBoolean canSchedule
-
logger
private final ConsoleStream logger
-
-
Constructor Detail
-
SchedulingStrategy
protected SchedulingStrategy(ConsoleStream logger)
-
-
Method Detail
-
schedule
protected abstract void schedule(java.lang.Runnable task)
Schedules tasks ifcanSchedule()
.- Parameters:
task
- runnable to schedule in a thread pool or invoke- Throws:
java.util.concurrent.RejectedExecutionException
- if task cannot be scheduled for executionjava.lang.NullPointerException
- if task is null- See Also:
RunnerScheduler.schedule(Runnable)
,Executor.execute(Runnable)
-
finished
protected abstract boolean finished() throws java.lang.InterruptedException
Waiting for scheduled tasks to finish. New tasks will not be scheduled by calling this method.- Returns:
true
if successfully stopped the scheduler, elsefalse
if already stopped (a shared thread pool was shutdown externally).- Throws:
java.lang.InterruptedException
- if interrupted while waiting for scheduled tasks to finish- See Also:
RunnerScheduler.finished()
-
stop
protected abstract boolean stop()
Stops scheduling new tasks (e.g. byExecutorService.shutdown()
on a private thread pool which cannot be shared with other strategy).- Returns:
true
if successfully stopped the scheduler, elsefalse
if already stopped (a shared thread pool was shutdown externally).- See Also:
ExecutorService.shutdown()
-
stopNow
protected boolean stopNow()
Stops scheduling new tasks andinterrupts
running tasks (e.g. byExecutorService.shutdownNow()
on a private thread pool which cannot be shared with other strategy).
This method callsstop()
by default.- Returns:
true
if successfully stopped the scheduler, elsefalse
if already stopped (a shared thread pool was shutdown externally).- See Also:
ExecutorService.shutdownNow()
-
disable
protected boolean disable()
Persistently disables this strategy. Atomically ignoresBalancer
to acquire a new permit.
The methodcanSchedule()
atomically returnsfalse
.- Returns:
true
ifcanSchedule()
has returntrue
on the beginning of this method call.
-
setDefaultShutdownHandler
protected void setDefaultShutdownHandler(Scheduler.ShutdownHandler handler)
-
hasSharedThreadPool
protected abstract boolean hasSharedThreadPool()
- Returns:
true
if a thread pool associated with this strategy can be shared with other strategies.
-
canSchedule
protected boolean canSchedule()
- Returns:
true
unless stopped, finished or disabled.
-
logQuietly
protected void logQuietly(java.lang.Throwable t)
-
-