Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环java实现_Java_Multithreading_Scheduling_Round Robin - Fatal编程技术网

循环java实现

循环java实现,java,multithreading,scheduling,round-robin,Java,Multithreading,Scheduling,Round Robin,我被要求做一个特定算法的多线程模拟器。 其中一项任务是将常规调度结果与循环调度结果进行比较。 当我在寻找关于循环调度方法的信息时,我发现了不同的一般解释和一些代码示例,我找不到它们与线程调度之间的任何关系。 例如,此代码(可在堆栈溢出上找到): publicstaticvoidrr3(int numProcess,int[]cpuBurst,int[]arrivalTime){ int量子=3,时间=0,温度; int completionTime=0; LinkedList进程=新建Linke

我被要求做一个特定算法的多线程模拟器。 其中一项任务是将常规调度结果与循环调度结果进行比较。 当我在寻找关于循环调度方法的信息时,我发现了不同的一般解释和一些代码示例,我找不到它们与线程调度之间的任何关系。 例如,此代码(可在堆栈溢出上找到):

publicstaticvoidrr3(int numProcess,int[]cpuBurst,int[]arrivalTime){
int量子=3,时间=0,温度;
int completionTime=0;
LinkedList进程=新建LinkedList();
for(int i=0;i

除了表示进程数量、每个进程的时间等的整数之外,我什么都看不到,但是我实际上如何管理它们的行为呢?我看不到任何运行或停止进程的要求。

您已经注意到这是一个抽象。也就是说,没有真正的工作进行。相反,工作只是由一组表示工作量的整数“模拟”的

关于如何运行或停止进程的问题在某种程度上隐藏在算法本身中:
LinkedList
存储“活动”进程。它们都是从一开始就开始的。在每一轮中,他们都会得到一个很短的时间段,在这个时间段内他们可以做一些工作。当他们的所有工作完成后,他们将从列表中删除

在最简单的形式中,当整数值被实际任务替换时,您可以替换该行

if(process.peek() == 0 ){ ... }
有点像

Task task = process.peek();
if (task.isFinished()) { ... }
Task task = process.peek();
task.doALittleBitOfWork();
否则(在else情况下),当有工作要做时,您可以更换线路

temp = process.pop();
process.push(temp - 1);  
有点像

Task task = process.peek();
if (task.isFinished()) { ... }
Task task = process.peek();
task.doALittleBitOfWork();

您发布的代码最初是一个问题的一部分,因此我们必须假设它仍然存在一些问题,但可能足以得出基本想法。

这个特定算法是什么?