前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BS1026-基于JavaSwing+多线程+操作系统进程调度算法GUI动画实现进程调用过程程序

BS1026-基于JavaSwing+多线程+操作系统进程调度算法GUI动画实现进程调用过程程序

作者头像
计算机程序优异哥
发布2022-12-02 15:51:22
3400
发布2022-12-02 15:51:22
举报
文章被收录于专栏:毕设程序汇总

采用JavaSwing+多线程+操作系统进程调度算法GUI动画实现进程调用过程程序,系统采用多层C/S软件架构,采用javaSwing窗口开发技术实现进程调度动画界面,实现JAVA2D模拟实现先入先出(FIFO),时间片轮转,优先级调度等操作系统进程调度算法整体逻辑过程。系统主要实现技术包括,java2D动画,java多线程控制,javaswing,操作系统核心调度算法实现等。

原文地址

一、程序设计

本次基于JavaSwing+多线程+操作系统进程调度算法GUI动画实现进程调用过程程序,主要内容涉及:

主要功能模块:进程管理、进程创建、进程调度动画模拟、进程调度算实现,系统多线程控制,分析统计等等

主要包含技术:java,swing,java多线程,操作系统原理,进程调度算法,java2D,GUI

主要包含算法:操作系统进程调度算法,先入先出(FIFO),时间片轮转,优先级调度等

二、效果实现

进程调度

在这里插入图片描述
在这里插入图片描述

其他效果省略

三、核心代码

1.时间片轮转算法

本系统程序时间片轮转模块主要实现对操作系统进程调用过程采用时间片轮转算法实现,控制GUI界面动画刷新与数据更新绑定,记录进程调度时间及效果等。

代码语言:java
复制
// 采用时间片轮转算法模拟进程调度
	public static void RoundRobin(List<ProcessModel> list) {
		// 循环模拟的轮转下标
		// int round = 0;
		// 最小轮转次数
		int minRoundRobinCount = 0;
		// 实际循环执行次数
		int actualRoundRobinCount = 0;
		for (int i = 0; i < list.size(); i++) {
			minRoundRobinCount += list.get(i).getProcessServiceTime();
		}
		while (true) {
			try {
				actualRoundRobinCount++;
				// 采用随机数模拟轮转
				ProcessModel process = list.get(new Random().nextInt(list
						.size()));
				// 采用round执行循环模拟
				// if (round >= list.size()) {
				// round = 0;
				// }
				// ProcessModel process = list.get(round++);
				int serviceTime = process.getProcessServiceTime();
				int currentTime = process.getProcessCurrentTime();
				if (currentTime < serviceTime) {
					Thread.sleep(1000);
					process.setProcessCurrentStatus("Running");
					process.setProcessCurrentTime(process
							.getProcessCurrentTime() + 1);
					// 刷新要显示的数据
					SystemController.getUserTable().showTableData(list);
					SystemController.getPanelProcess().requestFocus();
					SystemController.getPanelProcess().repaint();
					if (process.getProcessCurrentTime() == process
							.getProcessServiceTime()) {
						process.setProcessCurrentStatus("Finished");
						// 刷新要显示的数据
						SystemController.getUserTable().showTableData(list);
						SystemController.getPanelProcess().requestFocus();
						SystemController.getPanelProcess().repaint();
					} else {
						process.setProcessCurrentStatus("waitting");
					}
				}
				if (actualRoundRobinCount >= minRoundRobinCount && isOver(list)) {
					break;
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	// 判断进程队列中是否还有未完成的进程
	private static boolean isOver(List<ProcessModel> list2) {
		for (int i = 0; i < list2.size(); i++) {
			ProcessModel processModel = list2.get(i);
			if (processModel.getProcessCurrentTime() < processModel
					.getProcessServiceTime()) {
				return false;
			}
		}
		return true;
	}

2.先入先出(FIFO)算法

本系统程序FIFO模块主要实现对操作系统进程调用过程采用FIFO算法实现,控制GUI界面动画刷新与数据更新绑定,记录进程调度时间及效果等。

代码语言:java
复制
    /**
	 * 采用先来先服务算法模拟进程调度
	 *
	 * @param list
	 */
	public static void FcFs(List<ProcessModel> list) {
		for (int i = 0; i < list.size(); i++) {
			try {
				// 从进程队列中拿到一个进程(按照创建的顺序)
				ProcessModel processModel = list.get(i);
				for (int j = 0; j < processModel.getProcessServiceTime(); j++) {
					if ("Finished".equals(processModel
							.getProcessCurrentStatus())) {
						continue;
					}
					// 程序暂停一秒
					Thread.sleep(1000);
					processModel.setProcessCurrentStatus("Running");
					processModel.setProcessCurrentTime(processModel
							.getProcessCurrentTime() + 1);
					// 刷新要显示的数据
					SystemController.getUserTable().showTableData(list);
					SystemController.getPanelProcess().requestFocus();
					SystemController.getPanelProcess().repaint();
					if (processModel.getProcessCurrentTime() == processModel
							.getProcessServiceTime()) {
						processModel.setProcessCurrentStatus("Finished");
						// 刷新要显示的数据
						SystemController.getUserTable().showTableData(list);
						SystemController.getPanelProcess().requestFocus();
						SystemController.getPanelProcess().repaint();
					}
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、程序设计
  • 二、效果实现
    • 进程调度
    • 三、核心代码
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档