protected void loadData(boolean lazy, boolean forUpdate) {
        if (this.loadingJob != null) {
            int dataLoadUpdatePeriod = 200;
            int dataLoadTimes = getDataLoadTimeout() / dataLoadUpdatePeriod;
            try {
                for (int i = 0; i < dataLoadTimes; i++) {
                    Thread.sleep(dataLoadUpdatePeriod);
                    if (this.loadingJob == null) {
                        break;
                    }
                }
            } catch (InterruptedException e) {
                // interrupted
            }
            if (loadingJob != null) {
                DBWorkbench.getPlatformUI().showMessageBox("Load", "Service is busy", true);
                return;
            }
            return;
        }
        getListPropertySource();

        clearLazyCache();
        this.lazyLoadCanceled = false;

        if (lazy) {
            // start loading service
            synchronized (this) {
                this.loadingJob = createLoadService(forUpdate);
                if (this.loadingJob != null) {
                    this.loadingJob.addJobChangeListener(new JobChangeAdapter() {
                        @Override
                        public void done(IJobChangeEvent event) {
                            loadingJob = null;
                        }
                    });
                    this.loadingJob.schedule(LAZY_LOAD_DELAY);
                }
            }
        } else {
            // Load data synchronously
            final LoadingJob<Collection<OBJECT_TYPE>> loadService = createLoadService(forUpdate);
            if (loadService != null) {
                loadService.syncRun();
            }
        }
    }
Used to save/load columns configuration.
Must depend on object types

@param classList classes of objects in the list
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/itemlist/ObjectListControl.java