public ArrayList < Object > objectList; public ArrayList < Object > backingList; public boolean change = false; public void onTimer( ) { if ( change ) { backingList = new ArrayList < Object > ( objectList ); change = false; } for ( Object object : backingList ) object.update( ); } // ==> this method is invoked while onTimer is running public void addObject ( Object objectX ) { change = true; objectList.add( objectX ); }