protected void init ( ) { // create a synchronisation task which makes sure that the change requested by // the internal future has at one time been synchronized to the remote synchronisationFuture = GlobalCachedExecutorService . submit ( ( ) -> { dataProvider . addDataObserver ( notifyChangeObserver ) ; try { dataProvider . waitForData ( ) ; T result = internalFuture . get ( ) ; waitForSynchronization ( result ) ; } catch ( CouldNotPerformException ex ) { ExceptionPrinter . printHistory ( "Could not sync with internal future!" , ex , logger ) ; } finally { dataProvider . removeDataObserver ( notifyChangeObserver ) ; } return null ; } ) ; }
Start the internal synchronization task .