我发现以下代码不起作用,因为 while 循环无限期地窃取了锁:
public void run()
{
while(true)
{
synchronized(run)
{
if (!run) break;
[code]
}
}
}
public void stopRunning()
{
synchronized(run)
{
run = false;
}
}
我的目标是确保在我知道我的 run() 函数不再实际运行之前,我不会从 stopRunning() 命令返回。我试图阻止 run 函数继续引用我正在销毁的其他东西。我的第一个想法是在 synchronized(run) 之前添加一行代码,例如 Thread.sleep(100) 以确保它释放锁。这是推荐的做法还是我忽略了某些东西[愚蠢/明显]?
谢谢!