CloudSim源代码之DeferredQueue

package org.cloudbus.cloudsim.core;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

/**【此类执行延期的事件队列】
 * This class implements the deferred event queue used by Simulation.
 * The event queue uses a linked list to store the events.
 */
public class DeferredQueue {

    /** The list. 列表*/
    private final List<SimEvent> list = new LinkedList<SimEvent>();

    /** The max time. 最大时间 */
    private double maxTime = -1;

    /**【给队列增加新的事件】
     * Adds a new event to the queue.
     * preserves the temporal order of the events.
     *
     * @param newEvent The event to be added to the queue.
     */
    public void addEvent(SimEvent newEvent) {
        // The event has to be inserted as the last of all events
        // with the same event_time(). Yes, this matters.加入新事件
        double eventTime = newEvent.eventTime();
        if (eventTime >= maxTime) {
            list.add(newEvent);
            maxTime = eventTime;
            return;
        }
        ListIterator<SimEvent> iterator = list.listIterator();
        SimEvent event;
        while (iterator.hasNext()) {
            event = iterator.next();
            if (event.eventTime() > eventTime) {
                iterator.previous();
                iterator.add(newEvent);
                return;
            }
        }
        list.add(newEvent);
    }

    /**返回队列中事件迭代器
     * Returns an iterator to the events in the queue.
     *
     * @return the iterator
     */
    public Iterator<SimEvent> iterator() {
        return list.iterator();
    }

    /**返回事件队列大小
     * Returns the size of this event queue.
     *
     * @return the number of events in the queue.
     */
    public int size() {
        return list.size();
    }

    /**清除队列
     * Clears the queue.
     */
    public void clear(){
        list.clear();
    }
}

时间: 2024-11-06 18:09:08

CloudSim源代码之DeferredQueue的相关文章

CloudSim源代码之SimEntity

package org.cloudbus.cloudsim.core; import org.cloudbus.cloudsim.Log; import org.cloudbus.cloudsim.NetworkTopology; import org.cloudbus.cloudsim.core.predicates.Predicate; /* 仿真实体 */ /* This class represents a simulation entity. An entity handles eve

CloudSim源代码学习——任务单元(Cloudlet)

1 /* 2 * Title: CloudSim Toolkit 3 * Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds 4 * Licence: GPL - http://www.gnu.org/copyleft/gpl.html 5 * 6 * Copyright (c) 2009-2010, The University of Melbourne, Australi

CloudSim源代码之FutureQueue

package org.cloudbus.cloudsim.core; import java.util.Collection; import java.util.Iterator; import java.util.SortedSet; import java.util.TreeSet; /**执行未来事件队列 * This class implements the future event queue. * The event queue uses a TreeSet in order to

CloudSim介绍和使用

本文主要介绍一下我在使用CloudSim时翻译.整理和理解的一些信息,以及我的使用经验,希望能对有需要的朋友们有所帮助~1.我翻译和理解的一些信息:    2009年4月8日,澳大利亚墨尔本大学的网格实验室和Gridbus项目宣布推出云计算仿真软件,称为CloudSim.它是在离散事件模拟包SimJava上开发的函数库,可在Windows和Linux系统上跨平台运行,CloudSim继承了GridSim的编程模型,支持云计算的研究和开发,并提供了以下新的特点: (1)支持大型云计算的基础设施的建

使用Cloudsim实现基于多维QoS的资源调度算法之中的一个:配置Cloudsim环境

Cloudsim是一款开源的云计算仿真软件,它继承了网格计算仿真软件Gridsim的编程模型,支持云计算的研究和开发.它是一个自足的支持数据中心.服务代理人.调度和分配策略的平台,支持大型云计算的基础设施的建模与仿真,而且能够在Windows和Linux上跨平台执行. 本文介绍的是利用Cloudsim云仿真平台对资源调度算法进行仿真.当中包含Cloudsim环境的配置,资源调度算法的嵌入和仿真结果的分析. 1.首先介绍Cloudsim环境的配置 1.1.Cloudsim的执行须要Java环境,所

如何阅读源代码(7)

第七章: 编码规范和约定 +++++++++++++++++++ 137.了解了给定代码库所遵循的文件组织方式后, 就能更有效率地浏览它的源代码. 138.阅读代码时, 首先要确保您的编辑器或优美打印程序的tab设置, 与代码遵循的风格规范一致. 139.可以使用代码块的缩进, 快速地掌握代码的总体结构. 140.对编排不一致的代码, 应该立即给予足够的警惕. 141.分析代码时, 对标记为XXX, FIXME和TODO的代码序列要格外注意: 错误可能就潜伏在其中. 142.常量使用大写字母命名

jQuery源代码学习之六——jQuery数据缓存Data

一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所有用户自定义数据都被保存在这个对象的cache属性下,cache在此姑且称之为自定义数据缓存: 自定义数据缓存和DOM元素/javascript对象通过id建立关联,id的查找通过DOM元素/javascript元素下挂载的expando属性获得 话不多说,直接上代码.相关思路在代码注释中都有讲解

Java源代码学习 -- java.lang.String

java.lang.String是使用频率非常高的类.要想更好的使用java.lang.String类,了解其源代码实现是非常有必要的.由java.lang.String,自然联想到java.lang.StringBuffer和java.lang.StringBuilder,下篇文章再来研究java.lang.StringBuffer和java.lang.StringBuilder. 重要属性 java.lang.String对象中字符串主要是以字符数组的形式存储.当调用对象方法获取字符串长度时

修改源代码时不需要重启tomcat服务器

我们在写JSP + Servlet 的时修改了Java代码就要重新启动服务器.十分麻烦. 为了解决这个问题我们可以将服务器改成debug 模式.就是按调试状态这样修改Java代码就不用再重新启动服务器了.只需刷新浏览器即可.可以看下面的图 当然也可以将Tomcat设置为 热启动,修改源代码时也不需要重启tomcat服务器.具体的执行方法我就不写了.大家可以去搜索下热启动的方法. 我用的是Tomcat服务器我就写了Tomcate 的解决方法.以上不足请多指教.