Hi, can somebody help me with this?
A call to wait()/notify() will NOT prevent a deadlock - true of false?
I think it should be false, because when calling wait() thread releases the lock, so deadlock can be prevented.
But according to K&B the answer is true..
I think it should be false, because when calling wait() thread releases the lock, so deadlock can be prevented.
Just because a method releases a lock -- doesn't mean that it is a mechanism that can be used to prevent deadlocks. Can you explain how the method can be used to prevent deadlocks?
As Henry wrote, it cannot be used as a mechanism "to prevent deadlocks". But it "may" prevent deadlocks on some situations. In my view, this question cannot be accurately answered without having more details on it. Found your other topic.
But it "may" prevent deadlocks on some situations.
In theory, this may be true. In practice, I have never seen this done. In fact, even worrying about deadlocks is not common with many programmers...
And for developers that do worry about deadlocks (ie. the good ones)... Deadlock prevention techniques generally implemented are (1) using a coarse lock, or (2) lock ordering -- building a release mechanism just seems too elaborate and may even enforce using a "framework".
In my view, this question cannot be accurately answered without having more details on it.
This was exactly my concern. At this point I just want to pass SCJP exam. I really hope that real exam will not contain such questions. But since this statement and answer "true" is on the K&B Mock exam, I was concerned.
Alexander Danilou wrote:This was exactly my concern. At this point I just want to pass SCJP exam. I really hope that real exam will not contain such questions. But since this statement and answer "true" is on the K&B Mock exam, I was concerned.
You may encounter with same type questions on the real exam, but with some additional details. On that case it is no doubt to choose "true" as the correct answer.