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

📄 simthread.java

📁 对于CPU线程调度的模拟
💻 JAVA
字号:
package simcpu;

import java.util.LinkedList;
import java.util.Queue;


public class SimThread {

	static EventDriver driver; 
	
	int tid;
	int pid;
	int roundTime;
	int arrivalTime;
	int finishTime;
	int serviceTime;
	int ioTime;
	
	State state=State.NEW;

	public SimThread(int pid,int tid) {
		this.pid=pid;
		this.tid=tid;
	}

	public State getState() {
		return state;
	}

	public void setState(State state) {
		if(DataSource._v) {
			System.out.println("At time "+driver.getNow()+": Thread {"+tid+"} of process {"+pid+"} moves from "+this.state+" to "+state+".");
		}
		this.state = state;
	}
	
	
	Queue<Task> taskList=new LinkedList<Task>();
	public static class Task{
		public Task(boolean cpu, int time) {
			this.isCpu=cpu;
			this.remainingTime=time;
		}
		public boolean isCpu;
		public int remainingTime;
	}
	
	public Task getCurTask() {
		return taskList.peek();
	}

	public int getPid() {
		return pid;
	}

	public Event createNextEvent(EventDriver driver, SimSystem sys) {
		int slice=DataSource.getSlice();

		int remaining=getCurTask().remainingTime;
		if(slice<remaining)
			return new SliceEvent(driver.getNow()+slice,driver,sys);
		else if(taskList.size()>1)
			return new BlockEvent(driver.getNow()+remaining,driver,sys);
		else 
			return new FinishEvent(driver.getNow()+remaining,driver,sys);
	}

	public void run(int episode) {
		getCurTask().remainingTime-=episode;
		if(getCurTask().remainingTime<=0)
			taskList.poll();
	}

	public void ioFinish() {
		taskList.poll();
	}

	public int getRoundTime() {
		return roundTime;
	}

	public void setRoundTime(int roundTime) {
		this.roundTime = roundTime;
	}

	public int getArrivalTime() {
		return arrivalTime;
	}

	public void setArrivalTime(int arrivalTime) {
		this.arrivalTime = arrivalTime;
	}

	public int getFinishTime() {
		return finishTime;
	}

	public void setFinishTime(int finishTime) {
		this.finishTime = finishTime;
	}
}

⌨️ 快捷键说明

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