Instead of synchronizing on the Call's monitor, why not just use CAS and an AtomicBoolean?