资源简介
用java编写的一个调度算法,是计算机操作系统里的一个算法的演示程序
附源代码和设计报告
代码片段和文件信息
package math;
//主函数及算法
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.Vector;
import view.View;
/**
* 多级反馈队列算法
* @author 谌毅
*
*/
public class Arithmetic {
private static SeqQueue[] sq=new SeqQueue[4];
private static View view=null;
private int num=1time=-1doflag=0threadNum=0;
private static int maxthreadnum=5;
//time为暂停计时用||doflag标示出当前正在执行的队列
private boolean addThreadFlag=false;//addThreadFlag判断添加进程是否还在执行false为在运行true为停止
private boolean delThreadFlag=false;//delThreadFlag判断添加进程是否还在执行false为在运行true为停止
private boolean newflag=true;//newflag标示在执行过程中是否有比自己优先级高的进程加入队列true为没有false为有
private boolean isStop=false;//表示是否结束执行进程
private Work work=null;//保存每次从队列取出的进程
private SimpleDateFormat sdf=new SimpleDateFormat(“hh:mm:ss“);//定义时间显示格式
private Thread addthread=nulldelthread=null;//定义两个线程
public Arithmetic() {
for(int i=0;i<4;i++){
sq[i]=new SeqQueue(5(int)Math.scalb(1 i+1));//构建队列
}
view=new View(sq);//实例化面板
// maxthreadnum=view.getThreadNum();
// while(maxthreadnum>10||maxthreadnum==0){
// maxthreadnum=view.getThreadNum();
// }
addthread=new addThread();
delthread=new delThread();
addthread.start();
delthread.start();
}
/**
* 用于启动添加进程
* @author 谌毅
*/
public void startAddThread(){
addthread=new addThread();
threadNum=0;
addThreadFlag=false;
addthread.start();//启动添加进程
}
/**
* 用于启动执行进程
* @author 谌毅
*/
public void startDelThread(){
delthread=new delThread();
isStop=false;
delThreadFlag=false;
delthread.start();//启动执行进程
}
/**
* 用于停止添加进程
* @author 谌毅
*/
@SuppressWarnings(“deprecation“)
public void stopAddThread(){
addThreadFlag=true;
addthread.stop();
addthread=null;
}
/**
* 用于停止执行进程
* @author 谌毅
*/
public void stopDelThread(){
isStop=true;
}
/**
* 自动添加进程的方法
* @author 谌毅
*
*/
class addThread extends Thread{//添加进程
@SuppressWarnings(“deprecation“)
public void run() {
while(true){
try{
threadNum++;
Thread.sleep(new Random().nextInt(5000));
int time=0;
while(time==0){
time=new Random().nextInt(20);//随机生成进程要完成的时间
}
num++;
Work work=new Work(“进程“+(num-1)time);//生成一个进程
int flag=addInSeqQueue(0 work);//把进程放入队列
if(flag newflag=false;//表示有优先级更高的进程进入队列
}
View.setSq(sq);//更新面板数据
view.showWork();
view.addMes(“‘进程“+(num-1)+“‘于“+new SimpleDateFormat(“hh:mm:ss“).format(work.getInDate())+“进入“+(flag+1)+“号队列
“);
if(threadNum>=maxthreadnum){//设置添加多少个进程
addThreadFlag=true;
this.stop();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
/**
* 手动添加进程
* @param work:进程对象
*/
public void addThreadByHand(Work work){
int flag=addInSeqQueue(0 work);//把进程放入队列
if(flag
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 647168 2009-10-07 21:22 操作系统原理课程设计报告.doc
文件 8337 2009-06-30 14:26 src\math\Arithmetic.java
文件 2867 2009-06-30 14:18 src\math\SeqQueue.java
文件 1238 2009-04-25 12:06 src\math\Work.java
文件 8068 2009-07-02 14:36 src\view\ControlView.java
文件 12431 2009-07-03 13:22 src\view\View.java
文件 1937032 2009-07-03 12:32 多级反馈队列调度算法.exe
目录 0 2009-10-07 21:19 src\math
目录 0 2009-10-07 21:19 src\view
目录 0 2009-10-07 21:19 src
----------- --------- ---------- ----- ----
2617141 10
相关资源
- 学生信息管理系统 Java+sql server
- JavaWEB 图书购物车管理系统源码
- javaee之信息管理后台
- Java课程设计超级万年历文档
- 打印机管理网Java Web+Bootstrap
- bbs论坛完整源码 jsp+servlet
- JAVA连接SQL2008Microsoft SQL Server JDBC
- 基于java Web的网上商城的设计与实现的
- java selenium chromedriver win32 win64
- 自行车租赁管理系统
- Java写的KTV管理系统Swing界面,含源码
- MongoDB_权威指南_中文版和MongoDB Java
- JAVAWEB_项目开发_网上订餐系统
- 九宫格日记网
- Java语言程序设计第10版基础篇+进阶篇
- 基于java SSH的在线考试系统源代码
- db2数据库驱动jar包
- 武汉理工大学计算机马区综合实验2
- java与domino9.0.1通信jar包远程与本地均
- 西北工业大学高级语言程序设计Java
- javaWeb博客系统
- 解决IDEA不支持带BOM的UTF-8编码文件,
- 基于JAVA 的P2P
- 库存管理系统 数据库课程设计
- 基于JAVA的网上订票系统源码
- jsp+servlet+javabean+mysql实现的简易BBS论坛
- Java web 购物车Idea工程ServletCartDemo
- java httpclient https或http及文件中转上传
- 基于java坦克大战课程设计报告
- 基于Java的仓库管理系统课程设计报告
评论
共有 条评论