Java作业两种调度算法对比
Java作业调度算法一直是一项难点,本文致远教育小编大家介绍一下分布式作业流调度算法和短作业优先调度算法这两种Java作业调度算法。
分布式作业流调度算法
分布式作业流调度算法就是对于进程排在前面的工作优先运行,对于进程排在后面的工作后运行,也叫先来先服务算法,这种算法总是优先把排在队列前面的进程优先处理和运行。
换一种说法,这种调度算法只考虑作业的排列先后,而不考虑作业运行的时间因素。这种算法操作简单,不存在抢占式策略,但是整体性能不是很优越。
分布式作业流调度算法总是根据作业到达的顺序先后进行分配,也就是说系统会优先选择等待时间最长的工作进行优先运行,而不会关心作业运行需要时间的长短,把最先列入的作业调入分配中,创建运行程序,等待运行。
分布式作业流调度算法的有点主要有以下几个方面:
- 优先分配CPU主要是根据作业提交的先后顺序,或者是进程优先被分配为就绪状态的先后顺序优先分配。
- 一个新的作业只有当前运行的作业完成后才会被分配CPU运行。
- 这个调度算法是非抢占式的,总是要等待运行中的作业让出CPU,才会进行下一个作业的运行。
- 这个算法有利于工作内容较多,作业程序较多的情况。
短作业优先调度算法
短作业优先调度算法又叫做短进程优先调度算法,可以进行作业和进程的调度。使用这种作业调度算法就是在整个作业调度过程中,短作业优先调度算法会在后面等待的作业总优先选择服务时间最短的作业进行,把这些作业调到队列中,分配上相应的资源内容,自动的建立新的进程等待进程开始调度。短作业优先调度算法和短进程优先调度算法稍微有些区别,其中,短作业优先是筛选运行时间短的作业,而短进程优先是筛选运行时间短的进程。
短作业(进程)优先调度算法主要分为四类:
- 作业类;
- 短作业优先主方法类;
- 短作业优先工具类;
- 运行结果。
作业类
主要用来命名有关作业的相关属性问题,例如作业的名字,作业运行的时长范围,作业结束的时间,作业开始的时间,作业的运行许周期,作业的平均运行周期等,还有作业get和开始set的途径等。
短作业优先主方法类
主要用来协调所有的类进行统一的安排和调度,确保程序运行的顺序不乱套,并且能够按照有序的程序进行从而得到正确的结果。这一类的主要操作步骤为:a. 初始化处理工作累的数据,初始化模拟的进程。b. 对设定的程序执行相应的时间。c. 开始执行运算,按照短作业优先的算法,列队执行程序。d. 程序自动识别计算每个作业运行的时间情况。e. 输入列队中的工作情况。
短作业优先工具类
这类的主要方法有:
- 初始化整个作业。
- 按照服务的时间对工作进行列队排序。
- 按照到达的时间对工作进行列队排序。
- 调度算法函数,把作业按照筛选列入作业排序中。
- 算出时间和平均时间等信息。
- 运行结果
- 主要是用来对结果的运行和输出。
优势:
运算的平均时间和平均带权时间都会明显减小,可以极大的缩小作业运作的等待时间,提高作业运行的效率,提高系统的工作量。
缺陷:
忽略了任务的紧迫先后,使用不能确保要紧作业紧急处理、对于一些用时较长的作业来说不利,而且有些作业的长短分类掺杂主观因素,不能真正确保短作业优先的进程。
以上就是分布式作业流调度算法和短作业优先调度算法这两种Java作业调度算法的简单介绍和比较,希望能给同学一些帮助。如果需要Java作业代写,请咨询网站客服。