gpt4 book ai didi

java - 我如何使用同步原语来帮助 Waiters 服务 java 中的表?

转载 作者:行者123 更新时间:2023-11-30 11:46:03 25 4
gpt4 key购买 nike

我有 3 个类(class)。一个 Waiter(线程)、一个 Table(线程)和一个 Queue(不是线程)(简单的先进先出队列)。

最初创建了几个服务员,然后创建了表。 table 比服务员多得多,所以 table 必须“等待”服务员为他们服务。我应该使用“java 同步原语、等待通知和通知”来解决这个问题。以下是每个类(class)的指南:

表:当它启动时,它进入队列,然后调用内部方法 waitService(),如果它已被服务或等待服务员,则该方法返回。

我现在有这个方法的方式:

$if(serviced)
return 0;
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

服务员:服务员代码并没有真正给我任何问题,但本质上它的工作方式是在 run 方法中有一个无限循环,检查是否有一张 table 在等待,然后为该 table 服务提供随机时间,之后它检查是否有另一张 table 正在等待。它通过调用表类中的 giveService() 方法让表知道它正在为其提供服务。

队列:它有一个服务员列表和一个表列表。当服务员准备好提供服务时,它会调用队列类中的 nextTable()。这就是我的设置方式:

$public Table nextTable(Waiter w) throws InterruptedException {

if(closed)
return null;
if(tables.isEmpty()) {
w.wait();
}
Table t = tables.removeFirst();
t.notify();
return t;
}

我知道上面可能有一些非常基本的错误,但基本上我不知道同步原语在 java 中是如何工作的。任何帮助将不胜感激。

最佳答案

这与任何使用 wait()、notify() 和 notifyAll() 的教程一样好。首先通读它,看看您是否还有 SO 尚未回答的其他问题,或者您的问题的具体问题。

http://www.java-samples.com/showtutorial.php?tutorialid=306

关于java - 我如何使用同步原语来帮助 Waiters 服务 java 中的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012607/

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