public class SJF<J extends SimJob,Q extends SJF> extends AbstractNonPreemptiveWorkConservingSimQueue<J,Q> implements SimQoS<J,Q>
SJF queue serves jobs one at a time in order of ascending requested service times.
Shortest-Job First.
In case of ties, jobs are scheduled for service in order of arrival.
Copyright (C) 2005-2017 Jan de Jongh, TNO
This file is covered by the LICENSE file in the root of this project.
SimJob.getServiceTime(Q),
LJFAbstractSimEntity.Notifier, AbstractSimEntity.PreNotificationHookSimQueue.AutoRevocationPolicySimEntity.Action, SimEntity.UnknownNotificationTypePolicy, SimEntity.UnknownOperationPolicyeventsScheduled, SANITYUSE_ARRAY_OPTIMIZATION| Constructor and Description |
|---|
SJF(org.javades.jsimulation.r5.SimEventList eventList)
Creates a SJF queue given an event list.
|
| Modifier and Type | Method and Description |
|---|---|
SJF<J,Q> |
getCopySimQueue()
Returns a new
SJF object on the same SimEventList. |
Object |
getQoS()
Calls super method (in order to make implementation final).
|
Class |
getQoSClass()
Calls super method (in order to make implementation final).
|
protected double |
getServiceTimeForJob(J job)
Calls super method (in order to make implementation final).
|
protected void |
insertJobInQueueUponArrival(J job,
double time)
Inserts the job in the internal SJF job queue maintaining non-decreasing service-time ordering.
|
protected void |
removeJobFromQueueUponExit(J exitingJob,
double time)
Calls super method and removes the job (if present) from the internal SJF queue.
|
protected void |
resetEntitySubClass()
Calls super method and clears the internal SJF queue.
|
protected J |
selectJobToDropAtFullQueue(J arrivingJob,
double time)
Throws an exception.
|
protected J |
selectJobToStart()
Returns the first job in (and removes it from) the internal SJF queue.
|
String |
toStringDefault()
Returns "SJF".
|
hasServerAvailable, insertJobInQueueUponStart, isStartArmed, queueAccessVacationDropSubClass, removeJobFromQueueUponDeparture, removeJobFromQueueUponDrop, removeJobFromQueueUponRevokation, reschedule, rescheduleAfterArrival, rescheduleAfterDeparture, rescheduleAfterDrop, rescheduleAfterRevokation, rescheduleAfterStart, rescheduleForNewServerAccessCredits, setServerAccessCreditsSubClassgetBufferSize, getNumberOfServersarrive, autoRevoke, cancelDepartureEvent, cancelDepartureEvent, depart, departureFromEventList, drop, getAutoRevocationPolicy, getDepartureEvents, getDepartureEvents, getFirstJob, getFirstJobInServiceArea, getFirstJobInWaitingArea, getJobs, getJobsInServiceArea, getJobsInWaitingArea, getNumberOfJobs, getNumberOfJobsInServiceArea, getNumberOfJobsInWaitingArea, getServerAccessCredits, hasJobs, hasJobsInServiceArea, hasJobsInWaitingArea, hasServerAcccessCredits, isJob, isJobInServiceArea, isJobInWaitingArea, isQueueAccessVacation, registerStdOutSimQueueListener, revoke, revoke, scheduleDepartureEvent, scheduleJobArrival, setAutoRevocationPolicy, setQueueAccessVacation, setServerAccessCredits, start, takeServerAccessCredit, triggerPotentialNewStartArmed, unregisterStdOutSimQueueListeneraddPendingNotification, addPendingNotification, clearAndUnlockPendingNotificationsIfLocked, delegateOperation, doAfterNotifications, doOperation, fireAndLockPendingNotifications, getEventList, getLastUpdateTime, getRegisteredDelegatedOperations, getRegisteredNotificationTypes, getRegisteredOperations, getSimEntityListeners, getUnknownNotificationTypePolicy, getUnknownOperationPolicy, isIgnoreEventListReset, notifyEventListReset, registerDelegatedOperation, registerNotificationType, registerOperation, registerPreEventHook, registerPreNotificationHook, registerPreUpdateHook, registerSimEntityListener, registerStdOutSimEntityListener, removeDelegationForOperation, resetEntity, setIgnoreEventListReset, setName, setUnknownNotificationTypePolicy, setUnknownOperationPolicy, toString, unregisterSimEntityListener, unregisterStdOutSimEntityListener, updateclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitarrive, getAutoRevocationPolicy, getJobs, getJobsInServiceArea, getJobsInWaitingArea, getNumberOfJobs, getNumberOfJobsInServiceArea, getNumberOfJobsInWaitingArea, getServerAccessCredits, isJob, isJobInServiceArea, isJobInWaitingArea, isQueueAccessVacation, revoke, revoke, setAutoRevocationPolicy, setQueueAccessVacation, setServerAccessCreditsdoAfterNotifications, doOperation, getEventList, getLastUpdateTime, getRegisteredNotificationTypes, getRegisteredOperations, getSimEntityListeners, getUnknownNotificationTypePolicy, getUnknownOperationPolicy, isIgnoreEventListReset, registerSimEntityListener, resetEntity, setIgnoreEventListReset, setName, setUnknownNotificationTypePolicy, setUnknownOperationPolicy, unregisterSimEntityListener, updatepublic SJF(org.javades.jsimulation.r5.SimEventList eventList)
eventList - The event list to use.public SJF<J,Q> getCopySimQueue()
SJF object on the same SimEventList.getCopySimQueue in interface SimQueue<J extends SimJob,Q extends SJF>SJF object on the same SimEventList.AbstractSimEntity.getEventList()public String toStringDefault()
toStringDefault in interface SimEntitytoStringDefault in class AbstractSimQueue<J extends SimJob,Q extends SJF>SimEntity.setName(java.lang.String),
Object.toString()public final Class getQoSClass()
public final Object getQoS()
protected final void resetEntitySubClass()
resetEntitySubClass in class AbstractNonPreemptiveWorkConservingSimQueue<J extends SimJob,Q extends SJF>AbstractNonPreemptiveWorkConservingSimQueue.insertJobInQueueUponArrival(J, double)protected final void insertJobInQueueUponArrival(J job, double time)
In case of ties, jobs are scheduled for service in order of arrival from the underlying event list.
insertJobInQueueUponArrival in class AbstractNonPreemptiveWorkConservingSimQueue<J extends SimJob,Q extends SJF>job - The job that arrived.time - The current time (i.e., arrival time of the job).getServiceTimeForJob(J)protected final J selectJobToDropAtFullQueue(J arrivingJob, double time)
selectJobToDropAtFullQueue in class AbstractNonPreemptiveWorkConservingSimQueue<J extends SimJob,Q extends SJF>arrivingJob - The arriving job.time - The arrival time.IllegalStateException - As invocation of this method is unexpected (buffer cannot be full).AbstractNonPreemptiveWorkConservingSimQueue.insertJobInQueueUponArrival(J, double)protected final J selectJobToStart()
selectJobToStart in class AbstractNonPreemptiveWorkConservingSimQueue<J extends SimJob,Q extends SJF>AbstractNonPreemptiveWorkConservingSimQueue.insertJobInQueueUponArrival(J, double),
AbstractNonPreemptiveWorkConservingSimQueue.reschedule(double)protected final double getServiceTimeForJob(J job)
getServiceTimeForJob in class AbstractSimQueue<J extends SimJob,Q extends SJF>job - The job, non-null.protected final void removeJobFromQueueUponExit(J exitingJob, double time)
removeJobFromQueueUponExit in class AbstractNonPreemptiveWorkConservingSimQueue<J extends SimJob,Q extends SJF>exitingJob - The jobs that ends its visit, non-null.time - The current time, i.e., the time the job ends its visit.AbstractNonPreemptiveWorkConservingSimQueue.removeJobFromQueueUponDrop(J, double),
AbstractNonPreemptiveWorkConservingSimQueue.removeJobFromQueueUponRevokation(J, double, boolean),
AbstractNonPreemptiveWorkConservingSimQueue.removeJobFromQueueUponDeparture(J, double)Copyright © 2018. All rights reserved.