/* * Title: CloudSim Toolkit * Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds * Licence: GPL - http://www.gnu.org/copyleft/gpl.html * * Copyright (c) 2009-2010, The University of Melbourne, Australia */package org.cloudbus.cloudsim.core;import java.util.Collection;import java.util.Iterator;import java.util.SortedSet;import java.util.TreeSet;/** * 儲存未來會被執行的event,資料結構採用treeSet * 方法總結: * 排入佇列 * 排入佇列首 * 清除隊列中元素 * This class implements the future event queue used by {@link Simulation}. * The event queue uses a {@link TreeSet} in order to store the events. * * @authorMarcos Dias de Assuncao * @sinceCloudSim Toolkit 1.0 * * @see Simulation * @see java.util.TreeSet */public class FutureQueue {/** The sorted set. */private final SortedSet<SimEvent> sortedSet = new TreeSet<SimEvent>();/** The serial. */private long serial = 0;/** * Add a new event to the queue. Adding a new event to the queue * preserves the temporal order of the events in the queue. * * @param newEvent The event to be put in the queue. */public void addEvent(SimEvent newEvent) {//?serial什麼意思newEvent.setSerial(serial++);//自動排序sortedSet.add(newEvent);}/** * Add a new event to the head of the queue. * * @param newEvent The event to be put in the queue. */public void addEventFirst(SimEvent newEvent) {//與addevent只有這句不同.serial可能是優先權的意思newEvent.setSerial(0);sortedSet.add(newEvent);}/** * Returns an iterator to the queue. * * @return the iterator */public Iterator<SimEvent> iterator() {return sortedSet.iterator();}/** * Returns the size of this event queue. * * @return the size */public int size() {return sortedSet.size();}/** * Removes the event from the queue. * * @param event the event * * @return true, if successful */public boolean remove(SimEvent event) {return sortedSet.remove(event);}/** * Removes all the events from the queue. * * @param events the events * * @return true, if successful */public boolean removeAll(Collection<SimEvent> events) {return sortedSet.removeAll(events);}/** * Clears the queue. */public void clear(){sortedSet.clear();}}