public class AllRunnablesSyncPolicy extends java.lang.Object implements SyncPolicy
Modifier and Type | Field and Description |
---|---|
protected static ChoiceGenerator<ThreadInfo> |
blockedWithoutChoice |
protected boolean |
breakLockRelease |
protected boolean |
breakNotify |
protected boolean |
breakPriority |
protected boolean |
breakSingleChoice |
protected boolean |
breakSleep |
protected boolean |
breakYield |
protected VM |
vm |
BEGIN_ATOMIC, BLOCK, END_ATOMIC, INTERRUPT, JOIN, LOCK, NOTIFY, NOTIFYALL, PARK, POST_FINALIZE, PRIORITY, RELEASE, RESCHEDULE, RESUME, ROOT, SLEEP, START, STOP, SUSPEND, TERMINATE, UNPARK, WAIT, YIELD
Constructor and Description |
---|
AllRunnablesSyncPolicy(Config config) |
Modifier and Type | Method and Description |
---|---|
protected ChoiceGenerator<ThreadInfo> |
getRunnableCG(java.lang.String id,
ThreadInfo tiCurrent) |
protected ThreadInfo[] |
getTimeoutRunnables(ApplicationContext appCtx)
this is the main policy method that can be overridden by subclasses, e.g.
|
void |
initializeSyncPolicy(VM vm,
ApplicationContext appCtx)
called once per application, after the VM is fully initialized
|
void |
initializeThreadSync(ThreadInfo tiCurrent,
ThreadInfo tiNew)
called during ThreadInfo initialization, before Thread.start()
|
protected boolean |
setBlockingCG(java.lang.String id,
ThreadInfo tiCurrent)
set a runnable CG that would break a atomic section because it requires
a context switch
|
protected boolean |
setMaybeBlockingCG(java.lang.String id,
ThreadInfo tiCurrent,
ThreadInfo tiBlock)
set a runnable CG that only breaks a atomic section if the blocking thread
is the currently executing one
|
protected boolean |
setNextChoiceGenerator(ChoiceGenerator<ThreadInfo> cg) |
protected boolean |
setNonBlockingCG(java.lang.String id,
ThreadInfo tiCurrent)
set a runnable CG that is optional if we are in a atomic section
|
void |
setRootCG()
this one has to be guaranteed to set a CG
|
boolean |
setsBeginAtomicCG(ThreadInfo ti) |
boolean |
setsBlockedThreadCG(ThreadInfo ti,
ElementInfo ei) |
boolean |
setsEndAtomicCG(ThreadInfo ti) |
boolean |
setsInterruptCG(ThreadInfo tiCurrent,
ThreadInfo tiInterrupted) |
boolean |
setsJoinCG(ThreadInfo tiCurrent,
ThreadInfo tiJoin,
long timeout) |
boolean |
setsLockAcquisitionCG(ThreadInfo ti,
ElementInfo ei) |
boolean |
setsLockReleaseCG(ThreadInfo ti,
ElementInfo ei,
boolean didUnblock) |
boolean |
setsNotifyAllCG(ThreadInfo ti,
boolean didNotify) |
boolean |
setsNotifyCG(ThreadInfo ti,
boolean didNotify) |
boolean |
setsParkCG(ThreadInfo ti,
boolean isAbsTime,
long timeout) |
boolean |
setsPostFinalizeCG(ThreadInfo tiFinalizer) |
boolean |
setsPriorityCG(ThreadInfo ti) |
boolean |
setsRescheduleCG(ThreadInfo ti,
java.lang.String reason) |
boolean |
setsResumeCG(ThreadInfo tiCurrent,
ThreadInfo tiResumed) |
boolean |
setsSleepCG(ThreadInfo ti,
long millis,
int nanos) |
boolean |
setsStartCG(ThreadInfo tiCurrent,
ThreadInfo tiStarted) |
boolean |
setsStopCG(ThreadInfo tiCurrent,
ThreadInfo tiStopped) |
boolean |
setsSuspendCG(ThreadInfo tiCurrent,
ThreadInfo tiSuspended) |
boolean |
setsTerminationCG(ThreadInfo ti) |
boolean |
setsUnparkCG(ThreadInfo tiCurrent,
ThreadInfo tiUnparked) |
boolean |
setsWaitCG(ThreadInfo ti,
long timeout) |
boolean |
setsYieldCG(ThreadInfo ti) |
protected VM vm
protected boolean breakSingleChoice
protected boolean breakLockRelease
protected boolean breakNotify
protected boolean breakSleep
protected boolean breakYield
protected boolean breakPriority
protected static ChoiceGenerator<ThreadInfo> blockedWithoutChoice
public AllRunnablesSyncPolicy(Config config)
protected ThreadInfo[] getTimeoutRunnables(ApplicationContext appCtx)
protected ChoiceGenerator<ThreadInfo> getRunnableCG(java.lang.String id, ThreadInfo tiCurrent)
protected boolean setNextChoiceGenerator(ChoiceGenerator<ThreadInfo> cg)
protected boolean setNonBlockingCG(java.lang.String id, ThreadInfo tiCurrent)
protected boolean setBlockingCG(java.lang.String id, ThreadInfo tiCurrent)
protected boolean setMaybeBlockingCG(java.lang.String id, ThreadInfo tiCurrent, ThreadInfo tiBlock)
public void initializeSyncPolicy(VM vm, ApplicationContext appCtx)
SyncPolicy
initializeSyncPolicy
in interface SyncPolicy
public void initializeThreadSync(ThreadInfo tiCurrent, ThreadInfo tiNew)
SyncPolicy
initializeThreadSync
in interface SyncPolicy
public boolean setsBlockedThreadCG(ThreadInfo ti, ElementInfo ei)
setsBlockedThreadCG
in interface SyncPolicy
public boolean setsLockAcquisitionCG(ThreadInfo ti, ElementInfo ei)
setsLockAcquisitionCG
in interface SyncPolicy
public boolean setsLockReleaseCG(ThreadInfo ti, ElementInfo ei, boolean didUnblock)
setsLockReleaseCG
in interface SyncPolicy
public boolean setsTerminationCG(ThreadInfo ti)
setsTerminationCG
in interface SyncPolicy
public boolean setsWaitCG(ThreadInfo ti, long timeout)
setsWaitCG
in interface SyncPolicy
public boolean setsNotifyCG(ThreadInfo ti, boolean didNotify)
setsNotifyCG
in interface SyncPolicy
public boolean setsNotifyAllCG(ThreadInfo ti, boolean didNotify)
setsNotifyAllCG
in interface SyncPolicy
public boolean setsStartCG(ThreadInfo tiCurrent, ThreadInfo tiStarted)
setsStartCG
in interface SyncPolicy
public boolean setsYieldCG(ThreadInfo ti)
setsYieldCG
in interface SyncPolicy
public boolean setsPriorityCG(ThreadInfo ti)
setsPriorityCG
in interface SyncPolicy
public boolean setsSleepCG(ThreadInfo ti, long millis, int nanos)
setsSleepCG
in interface SyncPolicy
public boolean setsSuspendCG(ThreadInfo tiCurrent, ThreadInfo tiSuspended)
setsSuspendCG
in interface SyncPolicy
public boolean setsResumeCG(ThreadInfo tiCurrent, ThreadInfo tiResumed)
setsResumeCG
in interface SyncPolicy
public boolean setsJoinCG(ThreadInfo tiCurrent, ThreadInfo tiJoin, long timeout)
setsJoinCG
in interface SyncPolicy
public boolean setsStopCG(ThreadInfo tiCurrent, ThreadInfo tiStopped)
setsStopCG
in interface SyncPolicy
public boolean setsInterruptCG(ThreadInfo tiCurrent, ThreadInfo tiInterrupted)
setsInterruptCG
in interface SyncPolicy
public boolean setsParkCG(ThreadInfo ti, boolean isAbsTime, long timeout)
setsParkCG
in interface SyncPolicy
public boolean setsUnparkCG(ThreadInfo tiCurrent, ThreadInfo tiUnparked)
setsUnparkCG
in interface SyncPolicy
public void setRootCG()
setRootCG
in interface SyncPolicy
public boolean setsBeginAtomicCG(ThreadInfo ti)
setsBeginAtomicCG
in interface SyncPolicy
public boolean setsEndAtomicCG(ThreadInfo ti)
setsEndAtomicCG
in interface SyncPolicy
public boolean setsRescheduleCG(ThreadInfo ti, java.lang.String reason)
setsRescheduleCG
in interface SyncPolicy
public boolean setsPostFinalizeCG(ThreadInfo tiFinalizer)
setsPostFinalizeCG
in interface SyncPolicy