That's the solution. In fact the calls to a and b were "different Thread, concurrent invocation", but the call to c was "different thread, non overlapping invocation".
By forcing real concurrent calls to c a new C instance will be created.
Thanks for helping me to understand what's going on.
[Message sent by forum member 'friedeks' (friedeks)]
http://forums.java.net/jive/thread.jspa?messageID=314707