@Override
                public void run() {
                    while (true) {
                        try {
                            Boolean startSaved = applicationContext.getStartSavingStatus();
                            containerListener.setSaveInnerModel(startSaved);
                            if (savingInterval > 0 && !startSaved) {
                                if ((containerListener.interResultTimeStamp() < 0
                                                && containerListener.allContainerStartTime() > 0
                                                && (System.currentTimeMillis()
                                                                - containerListener.allContainerStartTime())
                                                        > savingInterval)
                                        || ((System.currentTimeMillis() - containerListener.interResultTimeStamp())
                                                > savingInterval)) {
                                    applicationContext.startSavingModelStatus(true);
                                    containerListener.setSaveInnerModel(true);
                                    startSaved = true;
                                }
                            }
                            while (startSaved) {
                                if (containerListener.interResultCompletedNum(containerListener.interResultTimeStamp())
                                        == containerListener.getInnerSavingContainerNum()) {
                                    lastSavingStatus = true;
                                    if (!savingModelList.contains(containerListener.interResultTimeStamp())) {
                                        savingModelList.add(containerListener.interResultTimeStamp());
                                    }
                                    break;
                                }
                                Utilities.sleep(conf.getInt(
                                        HboxConfiguration.HBOX_CONTAINER_HEARTBEAT_INTERVAL,
                                        HboxConfiguration.DEFAULT_HBOX_CONTAINER_HEARTBEAT_INTERVAL));
                            }
                        } catch (Exception e) {
                            LOG.info("Monitor the InnerModel saving error: " + e);
                        }
                        Utilities.sleep(conf.getInt(
                                HboxConfiguration.HBOX_CONTAINER_HEARTBEAT_INTERVAL,
                                HboxConfiguration.DEFAULT_HBOX_CONTAINER_HEARTBEAT_INTERVAL));
                    }
                }
Async Method telling NMClientAsync to launch specific container

@param container the container which should be launched
@return is launched success
core/src/main/java/net/qihoo/hbox/AM/ApplicationMaster.java