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]

Reply via email to