Job first

来微软的这些天,开始的那点激情又被慢慢淡忘了。可能刚来的时候给自己过大的压力,导致自己有些应接不暇,之前制定的锻炼计划又搁浅了两三天。等再想起来的时候,又开始犯懒不想动了。也许,我的计划都是这样慢慢被自己的惰性所吞噬的。虽然很难担保每天都有锻炼的热情,可是要把一件事变成一个习惯本来就是很困难的。自己还是没有这个决心和毅力,所以必须在自己自制力的基础上,加上主观的严格要求。今天开始,重新回归积极工作,积极锻炼。上班的时候不能闹情绪,走进办公室就需要忘掉所有工作无关的事。这也是培养自己的EQ的能力。活了大半辈子,才知道EQ原来比IQ更重要。

工作的闲暇还是要学习, 一定要学习。

短时间优先(Shortest Job First, SJF)调度算法是一种基于作业运行时间的非抢占式调度策略。它的基本原理是首先选择剩余运行时间最短的作业进行调度,让那些执行速度较快的任务优先获得CPU资源。这样可以保证系统响应时间和平均周转时间较短,提高整体效率。 然而,SJF算法并不现实,因为它假设所有进程都能准确预测执行时间,而在实际操作中这是不可能的,因为进程可能会受到其他因素的影响而变长。 在Java中实现 SJF 调度的一个简化示例通常不会直接嵌入到操作系统级别,而是作为一种启发式算法用于教学目的。下面是一个简单的模拟程序,它表示一个队列任务列表: ```java import java.util.PriorityQueue; public class SJFScheduler { private PriorityQueue<Job> jobs; // 使用最小堆存储任务 public SJFScheduler() { jobs = new PriorityQueue<>((a, b) -> a.getRuntime().compareTo(b.getRuntime())); } public void schedule(Job job) { jobs.offer(job); } public void executeNextJob() { if (!jobs.isEmpty()) { Job nextJob = jobs.poll(); System.out.println("Executing " + nextJob.getName() + " with runtime: " + nextJob.getRuntime()); // 模拟处理任务,这里只是简单打印,实际应用会处理任务逻辑 processJob(nextJob); } else { System.out.println("No more jobs to execute."); } } private void processJob(Job job) { // 这里只是一个占位符,实际应模拟任务处理过程 for (int i = 0; i < job.getRuntime(); i++) { try { Thread.sleep(100); // 简单的睡眠模拟 } catch (InterruptedException e) { e.printStackTrace(); } } } static class Job { String name; int runtime; public Job(String name, int runtime) { this.name = name; this.runtime = runtime; } @Override public String toString() { return "Job{" + "name='" + name + '\'' + ", runtime=" + runtime + '}'; } } } ``` 在这个例子中,`Job` 类包含任务名称和运行时间,调度器通过 `PriorityQueue` 来管理并按照预期执行顺序执行作业。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值