That answer is wrong, F will never happen.
You have to realize that, while the add and print methods are synchronized, no threads hold the lock to the NameList instance for throught the entire thread execution. While the JVM/SO may switch the executing thread whenever they please, they could switch them while they add ("A"), so we could have something like AABC (first print) AABCBC (second print), TOTAL would be AABCAABCBC, but no way three A's could be printed in sequence. the G answer could happen, if, before the first thread prints all, the jvm quickly switched to ther 2nd thread and back, and give it enough time to add another A, so first print all would be ABCA, and the second ABC ABC, total would be ABCAABCABC.
Only options E and G are correct. F is incorrect based on above, and the others are incorrect for obvious reasons.
[ September 11, 2007: Message edited by: Carlos Fernandes ]