📄 iogate.java
字号:
/* * IOGate.java * * Created on 2006年3月15日, 下午9:53 * *Each IODevice have a IOGate */package os.iodevice;/** * * @author Vernkin */import os.process.*;public class IOGate{ /**IOGate name**/ String name; /**For outer programe,whether the IO devides is busy or not**/ private boolean isFree = true; /**For IODriver,whether finish the last task**/ private boolean isFinished = false; /**The basic unit of data is int**/ private int data; private int interrupt_num; /**The MyProcess Object**/ private MyProcess mp; private static IOGate printer = new IOGate("Printer"); private static IOGate console = new IOGate("Console"); /**Empty Constructor**/ private IOGate(String name){ this.name = name; isFree = true; isFinished = false; } public static IOGate getInstance(String device_name){ if(device_name.equalsIgnoreCase("Printer")) return printer; else if(device_name.equalsIgnoreCase("Console")) return console; else{ System.out.println("Init IOGate : Unknown IO Device "+device_name); System.exit(1); return null; } } /*************************************************************** ******************* For Outer Program ************************** ****************************************************************/ /**Print a message to certain io devide * *@param p determine that io device * *@return If operates succesfully,return true,else false *(Operates succesfully means change the ioGate status) ***/ public boolean managerOutput(MyProcess p,int data,int num){ interrupt_num = num; mp = p; this.data = data; isFree = false; return true; } public boolean managerReadyToUse(){ return isFree && !isFinished; } /**Whether the formal work is not responed**/ public boolean managerRemainWork(){ return isFinished; } public void managerResponseOK(){ isFinished = false; System.out.println(name + " of manager response OK!"); } /*************************************************************** *********************** For IODriver *************************** ****************************************************************/ /**Whether **/ public boolean driverHaveTask(){ return !isFree && !isFinished; } public void driverSetData(int data){ this.data = data; driverFinishWork(); } /**finish the work at last**/ public void driverFinishWork(){ isFree = true; isFinished = true; System.out.println(name+" finish work"); } public String getIOGateName(){ return name; } public int getInterruptNum(){ return interrupt_num; } public MyProcess getProcess(){ return mp; } public int getData(){ return data; } public void rest(int millsec){ if(millsec<5000) millsec = 5000; try{ // System.out.println("IOGate Rest"); Thread.sleep(millsec); }catch(InterruptedException e){ System.out.println(e.getMessage()); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -