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)
SyncPolicyinitializeSyncPolicy in interface SyncPolicypublic void initializeThreadSync(ThreadInfo tiCurrent, ThreadInfo tiNew)
SyncPolicyinitializeThreadSync in interface SyncPolicypublic boolean setsBlockedThreadCG(ThreadInfo ti, ElementInfo ei)
setsBlockedThreadCG in interface SyncPolicypublic boolean setsLockAcquisitionCG(ThreadInfo ti, ElementInfo ei)
setsLockAcquisitionCG in interface SyncPolicypublic boolean setsLockReleaseCG(ThreadInfo ti, ElementInfo ei, boolean didUnblock)
setsLockReleaseCG in interface SyncPolicypublic boolean setsTerminationCG(ThreadInfo ti)
setsTerminationCG in interface SyncPolicypublic boolean setsWaitCG(ThreadInfo ti, long timeout)
setsWaitCG in interface SyncPolicypublic boolean setsNotifyCG(ThreadInfo ti, boolean didNotify)
setsNotifyCG in interface SyncPolicypublic boolean setsNotifyAllCG(ThreadInfo ti, boolean didNotify)
setsNotifyAllCG in interface SyncPolicypublic boolean setsStartCG(ThreadInfo tiCurrent, ThreadInfo tiStarted)
setsStartCG in interface SyncPolicypublic boolean setsYieldCG(ThreadInfo ti)
setsYieldCG in interface SyncPolicypublic boolean setsPriorityCG(ThreadInfo ti)
setsPriorityCG in interface SyncPolicypublic boolean setsSleepCG(ThreadInfo ti, long millis, int nanos)
setsSleepCG in interface SyncPolicypublic boolean setsSuspendCG(ThreadInfo tiCurrent, ThreadInfo tiSuspended)
setsSuspendCG in interface SyncPolicypublic boolean setsResumeCG(ThreadInfo tiCurrent, ThreadInfo tiResumed)
setsResumeCG in interface SyncPolicypublic boolean setsJoinCG(ThreadInfo tiCurrent, ThreadInfo tiJoin, long timeout)
setsJoinCG in interface SyncPolicypublic boolean setsStopCG(ThreadInfo tiCurrent, ThreadInfo tiStopped)
setsStopCG in interface SyncPolicypublic boolean setsInterruptCG(ThreadInfo tiCurrent, ThreadInfo tiInterrupted)
setsInterruptCG in interface SyncPolicypublic boolean setsParkCG(ThreadInfo ti, boolean isAbsTime, long timeout)
setsParkCG in interface SyncPolicypublic boolean setsUnparkCG(ThreadInfo tiCurrent, ThreadInfo tiUnparked)
setsUnparkCG in interface SyncPolicypublic void setRootCG()
setRootCG in interface SyncPolicypublic boolean setsBeginAtomicCG(ThreadInfo ti)
setsBeginAtomicCG in interface SyncPolicypublic boolean setsEndAtomicCG(ThreadInfo ti)
setsEndAtomicCG in interface SyncPolicypublic boolean setsRescheduleCG(ThreadInfo ti, java.lang.String reason)
setsRescheduleCG in interface SyncPolicypublic boolean setsPostFinalizeCG(ThreadInfo tiFinalizer)
setsPostFinalizeCG in interface SyncPolicy