You are sort of correct Cheng, the way that the array list constructor is implemented in the Oracle JDK means that it does not need to be synchronised, however in order to be 100% correct it should be wrapped in a sync block anyway, because you cannot be sure that it is implemented the same way on every JVM implementation (although in practice it probably is).