📄 simthread.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 + -