gpt4 book ai didi

java - 使用两个线程顺序调用两个不同函数时的通知/等待问题

转载 作者:行者123 更新时间:2023-12-01 22:03:40 24 4
gpt4 key购买 nike

我在同步同一对象上的函数时遇到问题。在我的主类中,我有一个按钮,按下该按钮时,应该从不同的类中顺序触发两个函数。第一个线程运行良好。我认为第二个陷入了僵局,但不知道是怎么回事。但是,当我为第二个线程指定超时时,它会触发。有人可以帮助我了解通知/等待发生了什么吗?

public void actionPerformed(ActionEvent ae)
{
t = new Thread ()
{
public void run ()
{
synchronized(this)
{
one();
notify();
}
}
};
thr = new Thread ()
{
public void run ()
{
synchronized (this)
{
try
{
wait();
two();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
};
thr.start();
t.start();
}

最佳答案

I'm having an issue synchronizing functions on the same object

问题是您没有在同一对象/锁上同步,因为 this在每个 synchronized(this)指的是 Thread 的不同实例:

  • 来自 t 的一个
  • 来自 thr 的一个

为了避免此类问题,请创建显式锁定对象,并将其传递给线程。

关于java - 使用两个线程顺序调用两个不同函数时的通知/等待问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220505/

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