public synchronized void tick()

in geronimo-metrics-extensions/geronimo-metrics-sigar/src/main/java/org/apache/geronimo/microprofile/metrics/extension/sigar/SigarRegistrar.java [87:108]


    public synchronized void tick() {
        final Collection<Definition> currentMetrics = collectMetrics();
        final Collection<Definition> alreadyRegistered = currentMetrics.stream()
                .filter(it -> currentDefinitions.containsKey(it.getName()))
                .collect(toList());
        final Collection<Definition> missingRegistered = new HashSet<>(currentDefinitions.values());
        missingRegistered.removeAll(alreadyRegistered);

        // remove no more accurate metrics
        missingRegistered.forEach(it -> {
            currentDefinitions.remove(it.getName());
            if (onUnregister != null) {
                onUnregister.accept(it);
            }
        });

        // register new metrics
        currentMetrics.removeAll(alreadyRegistered);
        currentMetrics.forEach(it -> onRegister.accept(new Definition(
            it.getName(), it.getDisplayName(), it.getDescription(), it.getUnit(),
            () -> it.getEvaluator().getAsDouble())));
    }