By restricting all object data access to a callback mechanism, a Java server can contain all concurrency issues in a single place, making it much easier for you to see if concurrency constraints have been violated.
Explaining the benefits of a gatekeeper, he states:
Implementing a callback-based system requires extra work but it offers a number of benefits.
Normally, you must acquire certain locks before you can access certain data. Synchronized methods can make this mandatory, but they often aren't enough because the accessing code still has to obey some kind of synchronization protocol. As a system gets larger, you are more and more liable to access the data at the wrong time. Also, just putting synchronization blocks around everything becomes more likely to result in deadlock.
A callback, on the other hand, cannot access the data until that data is passed to the method, and it cannot access the data after the method is finished. Thus, the period in which the data is available is precisely delineated.
Furthermore, this mechanism is controlled by the gatekeeper, which can implement any kind of ordering mechanism.
The technique can be very useful.
What do you think of it? It's very much a technique grounded in standard Java; would JMS have been more appropriate for throttling access? What issues do you see other techniques having?