zhangshuyan0 commented on PR #6434: URL: https://github.com/apache/hadoop/pull/6434#issuecomment-1897981697
> > Line211 has already ensured that we have a monitor for this object: > > https://github.com/apache/hadoop/blob/ba6ada73acc2bce560878272c543534c21c76f22/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java#L211-L223 > > > > So, I think the description in this PR is not a problem. What's your opinion? @hfutatzhanghb > > @zhangshuyan0 Sir, `this.wait(1000);` is in do-while loop, when we invoke `this.wait(1000)` at first time, it will release object monitor. But in extreme situation, it will throw Exception when invoke `this.wait(1000)` at the second time, because current thread does not hold the object monitor. Waiting for your response~ Let's see [JAVA doc](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) : > Thus, on return from the wait method, the synchronization state of the object and of thread T is exactly as it was when the wait method was invoked. Therefore, after `this.wait(1000)` returns at first time, it obtains the monitor again. I think no exception will be thrown here. By the way, in this [JAVA doc](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) , `synchronize -> while loop` is showed as a recommended usage. Looking forward to your response. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
