⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agent.java

📁 源程序可使用Jdk1.3以上的任何版本编译和运行主类是Simulator也可以在eclipse环境下直接编译和运行。 顾客队列服务模拟系统
💻 JAVA
字号:
/*
 * 创建日期 2005-2-26
 * 
 * TODO 要更改此生成的文件的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package simulator;

import java.util.Date;

public class Agent extends Thread {
    private boolean running = false; //线程执行的控制变量,为假时停止线程

	/**
	 * 
	 * @uml.property name="business"
	 * @uml.associationEnd multiplicity="(1 1)" inverse="agent:simulator.Business"
	 */
	private Business business = null; //该代理服务的Business


    private int ID = -1; //该代理的ID

	/**
	 * 
	 * @uml.property name="numCustomers" 
	 */
	private int numCustomers = 0; //该代理服务的顾客数目


    public Agent(Business _business, int _ID) {
        business = _business; //_ID这个代理服务于_business 企业
        ID = _ID;
    }

    public void start() {
        running = true;
        super.start(); //启动线程
    }

    public void halt() {
        running = false; //中止线程
    }

	/**
	 * 
	 * @uml.property name="numCustomers"
	 */
	public int getHandled() {
		return numCustomers; //返回已服务的顾客数
	}

    private void releaseCustomer(Customer customer)
    //释放一个顾客,即该顾客已服务完毕
    {
        numCustomers++; //已服务的顾客数增加1
        //计算顾客的等待时间,总的等待时间
        business.checkoutCustomer(customer.getWaitTime(new Date()));
        //先调用customer的getWaitTime方法计算该顾客等待了多少时间
        //如何调用business的checkoutCustomer方法累计business的服务的
        //顾客数,并累计总的等待时间
    }

    public void run() //线程的主体
    {
        while (running) {
            try {
                sleep((int) (Math.random() * Simulator.MAX_TELLER_BREAK) + 1000);
                //休眠一段时间,这段时间是在一个服务代理所需要的最大服务
                //时间之内,其基本时间为一秒
                Customer customer = business.requestCustomerFor(ID);
                //从第ID顾客队列中取出一个顾客
                //也可能是直接从某个顾客队列中取出一个顾客
                if (customer != null) //取出一个顾客
                {
                    sleep(customer.getDelayTime()); //休眠,模拟顾客购物或其他事情要
                    //耽误的时间
                    releaseCustomer(customer);
                    //释放一个顾客,即该顾客已服务完毕
                }
            } catch (InterruptedException ie) {
                System.out.println("Teller exception: " + ie);
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -