void () { if (!changed.compareAndSet(true, false)) { return; } try { //noinspection SynchronizeOnThis synchronized (this) { long start = System.currentTimeMillis(); doSave(myProject, myExternalRootProjects.values()); long duration = System.currentTimeMillis() - start; LOG.info("Save external projects data in " + duration + " ms"); } } catch (IOException | SerializationException e) { LOG.error(e); } }