Machine-translated by Google. Questions are authored in English.
Top

Discussion

Consider how much code a synchronized block should cover. Which statement is correct?

  • A.The length of a synchronized block has no effect on how threads contend for the lock.
  • B.A synchronized block should be as short as the invariant allows, to reduce contention.
  • C.A synchronized block should cover the whole method, since finer locking is unsafe.
  • D.A synchronized block should include any sleep or I/O it needs, to keep the lock warm.

Answer: B

Every other thread needing the monitor waits for the whole region, so holding it across slow work such as I/O or a sleep serialises the program. The block still has to be long enough to cover the whole invariant, since splitting it lets another thread observe a half-finished update.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.