gpt4 book ai didi

java - 在java线程中正确同步Vector

转载 作者:行者123 更新时间:2023-12-02 08:16:26 27 4
gpt4 key购买 nike

在经典的消费者\生产者线程场景中,我必须使用队列 vector 。由于我需要一个线程等待另一个线程直到 vector 中有一个元素,因此我尝试了以下方法:

public synchronized  QueueLine getCustomer(int index)
{
while (Customers.isEmpty())
{
try
{
wait();
}
catch (InterruptedException e) {}
}
return Customers.elementAt(index);
}

而另一个线程添加到“客户” vector 并使用通知。我知道我正在做一些磨损的事情,因为一旦notify()不会影响其他线程。

最佳答案

您正在消费者实例上进行同步。我认为你应该在 Vector 上同步:

public QueueLine getCustomer(int index) {
synchronized (Customers) {
while (Customers.isEmpty()) {
Customers.wait();
}
return Customers.elementAt(index);
}
}

在生产者中,您应该执行相同的操作:在 Vector 上进行同步和通知。

关于java - 在java线程中正确同步Vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318824/

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