欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)作業(yè)調(diào)度的示例代碼

 更新時(shí)間:2023年04月04日 08:32:58   作者:繪繪~  
這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)SJF算法調(diào)度,要求測(cè)試數(shù)據(jù)可以隨即輸入或從文件中讀入,文中的示例代碼講解詳細(xì),需要的可以參考一下

Java實(shí)現(xiàn)作業(yè)調(diào)度

要求

Java實(shí)現(xiàn)SJF算法調(diào)度,要求測(cè)試數(shù)據(jù)可以隨即輸入或從文件中讀入;

必須要考慮到作業(yè)的到達(dá)時(shí)間;

最終能夠計(jì)算每一個(gè)作業(yè)的周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間,給代碼加中文注釋

參考代碼

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

public class test {
    
    static class Job {
        public int jobId;
        public int arriveTime;
        public int needTime;
        public int finishTime;
        public int turnover;
        public double weightTurnover;

        public Job(int jobId, int arriveTime, int needTime) {
            this.jobId = jobId;
            this.arriveTime = arriveTime;
            this.needTime = needTime;
        }
    }

    public static void main(String[] args) {
        List<Job> jobList = new ArrayList<>();
        Random random = new Random();  

        int jobSize = 5;  
        int rangeArriveTime = 5;  
        int rangeNeedTime = 10;   
        for (int i = 0; i < jobSize; i++) {
            Job job = new Job(i, random.nextInt(rangeArriveTime), random.nextInt(rangeNeedTime) + 1);
            jobList.add(job);
        }

        jobList.sort(Comparator.comparingInt(o -> o.arriveTime));

        int currentTime = 0;  
        int totalTurnover = 0;  
        double totalWeightTurnover = 0;  
        int completeJobNum = 0;  

        while (completeJobNum < jobList.size()) {
            int shortestNeedTime = Integer.MAX_VALUE;
            Job shortestNeedJob = null;
            
            for (Job job : jobList) {
                if (job.finishTime > 0) { 
                    continue;
                }
                if (job.arriveTime <= currentTime && job.needTime < shortestNeedTime) {  
                    shortestNeedTime = job.needTime;
                    shortestNeedJob = job;
                }
            }
            currentTime += shortestNeedJob.needTime;  
            shortestNeedJob.finishTime = currentTime;  
            shortestNeedJob.turnover = shortestNeedJob.finishTime - shortestNeedJob.arriveTime;  
            shortestNeedJob.weightTurnover = (double) shortestNeedJob.turnover / shortestNeedJob.needTime;  
            totalTurnover += shortestNeedJob.turnover;  
            totalWeightTurnover += shortestNeedJob.weightTurnover;  
            completeJobNum++;  
        }

        for (Job job : jobList) {
            System.out.println("作業(yè)" + job.jobId + "的周轉(zhuǎn)時(shí)間為" + job.turnover + ",帶權(quán)周轉(zhuǎn)時(shí)間為" + job.weightTurnover);
        }

        System.out.println("平均周轉(zhuǎn)時(shí)間為" + (double) totalTurnover / jobList.size());
        System.out.println("帶權(quán)平均周轉(zhuǎn)時(shí)間為" + totalWeightTurnover / jobList.size());
    }
}

運(yùn)行效果

到此這篇關(guān)于Java實(shí)現(xiàn)作業(yè)調(diào)度的示例代碼的文章就介紹到這了,更多相關(guān)Java作業(yè)調(diào)度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript中棧和隊(duì)列應(yīng)用詳情

    JavaScript中棧和隊(duì)列應(yīng)用詳情

    這篇文章主要介紹了JavaScript中棧和隊(duì)列應(yīng)用詳情,棧如果用數(shù)組模擬的話是類似于一個(gè)U形桶狀堆??臻g,文章圍繞制圖展開詳細(xì)的內(nèi)容展開更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-06-06
  • MyBatis SqlMapConfig.xml配置

    MyBatis SqlMapConfig.xml配置

    MyBatis 的核心配置文件SqlMapConfig.xml,接下來(lái)通過(guò)本文給大家介紹MyBatis SqlMapConfig.xml配置,非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件

    SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件

    yml,yaml,properties三種文件都是用來(lái)存放配置的文件,一些靜態(tài)數(shù)據(jù),配置的數(shù)據(jù)都會(huì)存放到里邊。本文主要為大家整理了SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件的方法,需要的可以參考一下
    2023-04-04
  • Java單線程ThreadLocal串值問(wèn)題解決方案

    Java單線程ThreadLocal串值問(wèn)題解決方案

    這篇文章主要介紹了Java單線程ThreadLocal串值問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java8新增的重復(fù)注解功能示例

    Java8新增的重復(fù)注解功能示例

    這篇文章主要介紹了Java8新增的重復(fù)注解功能,結(jié)合實(shí)例形式分析了java8重復(fù)注解的功能、定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • SpringBoot創(chuàng)建多模塊項(xiàng)目的全過(guò)程記錄

    SpringBoot創(chuàng)建多模塊項(xiàng)目的全過(guò)程記錄

    這篇文章主要給大家介紹了關(guān)于SpringBoot創(chuàng)建多模塊項(xiàng)目的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • JDBC連接數(shù)據(jù)庫(kù)的方法匯總

    JDBC連接數(shù)據(jù)庫(kù)的方法匯總

    這篇文章主要介紹了JDBC連接數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式總結(jié)分析了JDBC連接各種常見(jiàn)數(shù)據(jù)庫(kù)的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-08-08
  • java如何確定一個(gè)鏈表有環(huán)及入口節(jié)點(diǎn)

    java如何確定一個(gè)鏈表有環(huán)及入口節(jié)點(diǎn)

    這篇文章主要介紹了java如何確定一個(gè)鏈表有環(huán)及入口節(jié)點(diǎn),想了解數(shù)據(jù)結(jié)構(gòu)的同學(xué)可以參考下
    2021-04-04
  • Java基于API接口爬取商品數(shù)據(jù)的示例代碼

    Java基于API接口爬取商品數(shù)據(jù)的示例代碼

    Java作為一種流行的編程語(yǔ)言,可以用于編寫程序來(lái)調(diào)用這些API接口,從而獲取商品數(shù)據(jù),本文將介紹如何使用Java基于API接口爬取商品數(shù)據(jù),包括請(qǐng)求API、解析JSON數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)等步驟,并提供相應(yīng)的代碼示例,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 詳解PipedInputStream和PipedOutputStream_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    詳解PipedInputStream和PipedOutputStream_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了管道PipedInputStream和PipedOutputStream,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論