question: change to a new state and notify all listeners . this is a private method that is only invoked from synchronized methods , which avoid having to clone the listener list . it does imply that the state change listener methods should be short lived , as they will delay the state transition . concode_field_sep STATE state concode_elem_sep List<ServiceStateChangeListener> listeners concode_elem_sep HiveConf hiveConf concode_elem_sep String name concode_elem_sep long startTime concode_elem_sep Log LOG concode_field_sep void init concode_elem_sep String getName concode_elem_sep void stop concode_elem_sep HiveConf getHiveConf concode_elem_sep void start concode_elem_sep void unregister concode_elem_sep void ensureCurrentState concode_elem_sep long getStartTime concode_elem_sep STATE getServiceState concode_elem_sep void register
target: void function ( STATE arg0 ) { state = arg0 ; for ( ServiceStateChangeListener loc0 : listeners ) { loc0 . stateChanged ( this ) ; } }