gpt4 book ai didi

java - Java中使用线程并发模拟多核CPU

转载 作者:行者123 更新时间:2023-12-02 07:22:59 26 4
gpt4 key购买 nike

我正在尝试编写一个模拟多核CPU的程序。

我们有 3 个线程将为我们完成核心工作。

还有一些任务将以 FIFO(先进先出)顺序完成。由于我对java中的线程概念很陌生,在对此进行了很多思考之后,我仍然对如何编写程序一无所知。

我只是想知道如何以最简单的方式做到这一点以及必须使用哪些方法和类。

我正在考虑使用 wait()notifyAll() 等方法,但我不确定这是否有效。

在这个程序中,就像在每一步中,主方法都会打印出来并增加主时钟,然后线程将根据当前值决定是否必须打印某些内容(启动新任务,上下文切换)主时钟。我将不胜感激任何提示。

输出必须如下所示:

Task 2 : 6 time units
Task 3 : 9 time units
Task 4 : 10 time units
Task 5 : 10 time units
Task 6 : 8 time units
Task 7 : 7 time units

--------------------

Master Clock : 0
Core 2 started its first task of 7 time units
Core 0 started its first task of 9 time units
Core 1 started its first task of 6 time units
Master Clock : 1
Master Clock : 2
Master Clock : 3
Master Clock : 4
Master Clock : 5
Master Clock : 6
Core 1 started context switch
Master Clock : 7
Core 2 started context switch
Master Clock : 8
Core 1 started a new task of 9 time units
Master Clock : 9
Core 2 started a new task of 10 time units
Core 0 started context switch
Master Clock : 10
Master Clock : 11
Core 0 started a new task of 10 time units
Master Clock : 12
Master Clock : 13
Master Clock : 14
Master Clock : 15
Master Clock : 16
Master Clock : 17
Core 1 started context switch
Master Clock : 18
Master Clock : 19
Core 1 started a new task of 8 time units
Core 2 started context switch
Master Clock : 20
Master Clock : 21
Core 0 completed a total of 2 tasks
Core 2 started a new task of 7 time units
Master Clock : 22
Master Clock : 23
Master Clock : 24
Master Clock : 25
Master Clock : 26
Master Clock : 27
Core 1 completed a total of 3 tasks
Master Clock : 28
Core 2 completed a total of 3 tasks

最佳答案

根据您的描述,您似乎不需要(或应该想要)Java 线程来进行此模拟。虚拟内核根据主时钟同步运行。您所需要的只是一个代表主时钟的主循环,以及每个虚拟核心的操作队列。在每个主时钟步骤中,您确定每个虚拟核心的操作并执行它。不需要真正的线程。

关于java - Java中使用线程并发模拟多核CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com