这是:
synchronized (this)
{
fork[i] = false;
notifyAll();
}
synchronized (this)
{
fork[j] = false;
notifyAll();
}
System.out.println("Phil" + id + "released the forks");
与此相同吗?
synchronized (this)
{
fork[j] = fork[i] = false;
notifyAll();
}
System.out.println("Phil" + id + "released the forks");
我想知道是否只有一个同步的问题,谢谢
答案 0 :(得分:0)
在第一种情况下,fork [i]和fork [j]可能不会在#34;同时#"中取错值。
在第二种情况下,fork [i]和fork [j]将在同一个关键部分中取两个false。
如果可能出现问题取决于您的意图。