基于优先权的时间片轮转算法

本文介绍了如何创建一个名为tcElement的进程类,用于处理进程的属性如名称、到达时间、服务时间、优先级和状态。通过Run()方法模拟进程调度,每次调用将增加优先级并更新已服务时间,直到进程完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package pojo;


/*创建一个进程类,以后对每一个进程都可以用对象来处理*/
public class tcElement {
	private String name;//进程名称
	private tcElement next;//该进程之后的进程
	private double arrive_time;//到达时间
	private double serves_time;//服务时间、
	private double served_time;//已服务时间
	private double priority;//优先级
	private boolean state;//状态
	/*构造方法*/
	public tcElement() {
		this.name = null;
		this.arrive_time = 0;
		this.serves_time = 0;
		this.priority = 0;
		this.next = null;
		this.served_time = 0;
		this.state = false;
	}
	/*构造方法*/
	public tcElement(String name, double arrive_time, double serves_time,
			double priority) {
		this.name = name;
		this.arrive_time = arrive_time;
		this.serves_time = serves_time;
		this.priority = priority;
		this.next = null;
		this.served_time = 0;
		this.state = false;
	}
	/*重载toString方法 让其返回元素中的所有属性串行化后的String值*/
	public String toString() {
		StringBuffer strb = new StringBuffer("");
		strb.append(this.name);
		strb.append("\t");
		if(next == null){
			strb.append(this.next);
		}else{
			strb.append(this.next.getName());
		}
		strb.append("\t");
		strb.append(this.arrive_time);
		strb.append("\t");
		strb.append(this.serves_time);
		strb.append("\t");
		strb.append(this.served_time);
		strb.append("\t");
		strb.append(this.priority);
		strb.append("\t");
		strb.append(this.state);
		return strb.toString();
	}
	
	/**
	 * @return返回各属性显示的头
	 */
	public static String getHead() {
		StringBuffer strb = new StringBuffer("");
		strb.append("name");
		strb.append("\t");
		strb.append("next");
		strb.append("\t");
		strb.append("arrive_time");
		strb.append("\t");
		strb.append("serves_time");
		strb.append("\t");
		strb.append("served_time");
		strb.append("\t");
		strb.append("priority");
		strb.append("\t");
		strb.append("state");
		return strb.toString();
	}
	//进程被调度一次其优先级加2 已服务时间加1
	public boolean Run(){
		this.state = true;
		this.served_time++;
		this.priority +=2;


		this.state = false;
		return (this.served_time >= this.serves_time);
	}
	
	//以下是各个属性的设置和获取的接口
	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public tcElement getNext() {
		return next;
	}


	public boolean hasNext() {
		if (next != null) {
			return true;
		} else {
			return false;
		}
	}


	public void setNext(tcElement next) {
		this.next = next;
	}


	public double getArrive_time() {
		return arrive_time;
	}


	public void setArrive_time(double arrive_time) {
		this.arrive_time = arrive_time;
	}


	public double getServes_time() {
		return serves_time;
	}


	public void setServes_time(double serves_time) {
		this.serves_time = serves_time;
	}


	public double getServed_time() {
		return served_time;
	}


	public void setServed_time(double served_time) {
		this.served_time = served_time;
	}


	public double getPriority() {
		return priority;
	}


	public void setPriority(double priority) {
		this.priority = priority;
	}


	public boolean isState() {
		return state;
	}


	public void setState(boolean state) {
		this.state = state;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值