Yes.
Since you are synchronizing your Phone instance, this is possible. Another thread may delete the same Phone object from the ArrayList . But the Phone link will point to the same instance.
So that no other thread can access your list from another place, synchronize in the list itself -
synchronized(phoneList) {
source share