gpt4 book ai didi

Java并发使电梯停在附近楼层

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:27 24 4
gpt4 key购买 nike

因此,对于这项作业,我必须模拟电梯。现在,我生成了 3 个人,他们在随机楼层上生成并具有随机目标楼层。我有一部电梯来接他们并带他们来。我遇到的问题是电梯一次只能承载 1 个人。我不知道如何让电梯停在有人在路上的楼层。例如:

第 1 人的起始楼层为 3,并将前往 8第 2 人的起始楼层为 9 层,即将到达 10 层第 3 个人的起始楼层为 6,即将到达 9

目前的工作方式是,电梯先到 3 楼,然后到 8 楼,而 3 号人不会在 6 楼停留。我不知道如何解决这个问题。

电梯在楼层之间移动的代码是这样的:

public void moveTo(int floor) throws InterruptedException
{
int distance;

synchronized(this)
{
distance = Math.abs(currentFloor - floor);
System.out.println(name + " is on floor " + currentFloor + " moving to " + floor);
}

Thread.sleep(1000 * distance);

synchronized(this)
{
currentFloor = floor;
}
}

电梯的主要 run() 方法是这样的:

public void run()
{
try
{
for(;;)
{
ElevatorTask task;

synchronized(this)
{
while(next_task == null)
wait();

task = next_task;
next_task = null;
notify();
}

moveTo(task.getDestination());
}
}
catch(InterruptedException ex){}
}

对此的任何帮助都会很棒。谢谢

最佳答案

只是想:

当您的电梯靠近楼层时,请检查那里是否有人。如果是,则开门,如果否,则跳到下一层。

将所有人送到各自的楼层后,前往最近有人调用电梯的楼层。

关于Java并发使电梯停在附近楼层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723749/

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