It's meaningless to refer to a neighbor who failed the certification because he didn't synchronize a particular method in the Data class: I can think of a number of designs that are not
thread safe even though all the methods in Data are synchronized, and a number of designs that are perfectly thread safe with none of the methods in Data synchronized. Vector is a simple example, -- just because it is a synchronized collection doesn't mean that the thread safety is assured when you use it.
You really need to understand how the thread safety is assured in
your design. After you are satisfied with your theoretical foundation, run a practical
test. Create 50 client threads, each incrementing a field of the same database record, 10000 times in a row, for each thread. If at the end of the test run the field is icremented by exactly 500000, in all likelihood you will pass the certification.
[ February 03, 2004: Message edited by: Eugene Kononov ]