I am asking this purely to determine the worthwhile-ness of implementing the class in Question ...
Do you know of a Java utility class that takes an un-synchronized instance, uses reflection to investigate that instance, and returns the input instance "wrapped" within synchronized calls ?
( ie: A factory which creates a synchronized delegate class for any instance )
I like Jon Skeet's answer; it's seeing the forest instead of the trees. But to answer the question:
Assuming that the instance belongs to some interface, it's easy to use
java.lang.reflect.Proxy
to do this.This code is not tested, by the way. Use at your own risk.
No, I don't know of anything which does that - and I'd rarely want to use it.
Synchronizing individual operations is rarely a useful feature. Typically you want to synchronize a few operations at a time. Something which simply synchronizes individual operations gives an illusion of thread-safety (enough to make some programmers careless) without dealing with the real decisions of which operations need to be performed in an atomic fashion for any particular situation.
The overhead from reflection would also reduce the speedup that you'd get by threading your code...
I want to call attention to just how cool the solution from Chris Jester-Young is. I've refactored it into a simple static function that I've been successfully using which I've included below. Thanks Chris!