public void prefetch()

in src/main/java/com/aliyun/credentials/policy/NonBlocking.java [28:52]


    public void prefetch(Runnable valueUpdater) {
        if (currentlyRefreshing.compareAndSet(false, true)) {
            if (!CONCURRENT_REFRESH_LEASES.tryAcquire()) {
                logger.warning("Skipping a background refresh task because there are too many other tasks running.");
                currentlyRefreshing.set(false);
                return;
            }
            try {
                executor.submit(() -> {
                    try {
                        valueUpdater.run();
                    } catch (Throwable t) {
                        logger.logThrowableAsWarning(t);
                    } finally {
                        CONCURRENT_REFRESH_LEASES.release();
                        currentlyRefreshing.set(false);
                    }
                });
            } catch (Throwable t) {
                logger.logThrowableAsWarning(t);
                CONCURRENT_REFRESH_LEASES.release();
                currentlyRefreshing.set(false);
            }
        }
    }